// RUN: not llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon < %s 2> %t
// RUN: FileCheck --check-prefix=CHECK-ERROR < %t %s

//------------------------------------------------------------------------------
// Vector Integer Add/sub
//------------------------------------------------------------------------------

        // Mismatched vector types
        add v0.16b, v1.8b, v2.8b
        sub v0.2d, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         add v0.16b, v1.8b, v2.8b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sub v0.2d, v1.2d, v2.2s
// CHECK-ERROR:                              ^

//------------------------------------------------------------------------------
// Vector Floating-Point Add/sub
//------------------------------------------------------------------------------

        // Mismatched and invalid vector types
        fadd v0.2d, v1.2s, v2.2s
        fsub v0.4s, v1.2s, v2.4s
        fsub v0.8b, v1.8b, v2.8b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fadd v0.2d, v1.2s, v2.2s
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fsub v0.4s, v1.2s, v2.4s
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fsub v0.8b, v1.8b, v2.8b
// CHECK-ERROR:                  ^

//----------------------------------------------------------------------
// Vector Integer Mul
//----------------------------------------------------------------------

        // Mismatched and invalid vector types
        mul v0.16b, v1.8b, v2.8b
        mul v0.2d, v1.2d, v2.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         mul v0.16b, v1.8b, v2.8b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         mul v0.2d, v1.2d, v2.2d
// CHECK-ERROR:                ^

//----------------------------------------------------------------------
// Vector Floating-Point Mul/Div
//----------------------------------------------------------------------
        // Mismatched vector types
        fmul v0.16b, v1.8b, v2.8b
        fdiv v0.2s, v1.2d, v2.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fmul v0.16b, v1.8b, v2.8b
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fdiv v0.2s, v1.2d, v2.2d
// CHECK-ERROR:                        ^

//----------------------------------------------------------------------
// Vector And Orr Eor Bsl Bit Bif, Orn, Bic,
//----------------------------------------------------------------------
        // Mismatched and invalid vector types
        and v0.8b, v1.16b, v2.8b
        orr v0.4h, v1.4h, v2.4h
        eor v0.2s, v1.2s, v2.2s
        bsl v0.8b, v1.16b, v2.8b
        bsl v0.2s, v1.2s, v2.2s
        bit v0.2d, v1.2d, v2.2d
        bif v0.4h, v1.4h, v2.4h
        orn v0.8b, v1.16b, v2.16b
        bic v0.2d, v1.2d, v2.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         and v0.8b, v1.16b, v2.8b
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: immediate must be an integer in range [0, 255]
// CHECK-ERROR:         orr v0.4h, v1.4h, v2.4h
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         eor v0.2s, v1.2s, v2.2s
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         bsl v0.8b, v1.16b, v2.8b
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         bsl v0.2s, v1.2s, v2.2s
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         bit v0.2d, v1.2d, v2.2d
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         bif v0.4h, v1.4h, v2.4h
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         orn v0.8b, v1.16b, v2.16b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         bic v0.2d, v1.2d, v2.2d
// CHECK-ERROR:                ^

//----------------------------------------------------------------------
// Vector Integer Multiply-accumulate and Multiply-subtract
//----------------------------------------------------------------------

        // Mismatched and invalid vector types
        mla v0.16b, v1.8b, v2.8b
        mls v0.2d, v1.2d, v2.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         mla v0.16b, v1.8b, v2.8b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         mls v0.2d, v1.2d, v2.2d
// CHECK-ERROR:                ^

//----------------------------------------------------------------------
// Vector Floating-Point Multiply-accumulate and Multiply-subtract
//----------------------------------------------------------------------
        // Mismatched vector types
        fmla v0.2s, v1.2d, v2.2d
        fmls v0.16b, v1.8b, v2.8b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fmla v0.2s, v1.2d, v2.2d
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fmls v0.16b, v1.8b, v2.8b
// CHECK-ERROR:                         ^


//----------------------------------------------------------------------
// Vector Move Immediate Shifted
// Vector Move Inverted Immediate Shifted
// Vector Bitwise Bit Clear (AND NOT) - immediate
// Vector Bitwise OR - immedidate
//----------------------------------------------------------------------
      // out of range immediate (0 to 0xff)
      movi v0.2s, #-1
      mvni v1.4s, #256
      // out of range shift (0, 8, 16, 24 and 0, 8)
      bic v15.4h, #1, lsl #7
      orr v31.2s, #1, lsl #25
      movi v5.4h, #10, lsl #16
      // invalid vector type (2s, 4s, 4h, 8h)
      movi v5.8b, #1, lsl #8

// CHECK-ERROR: error: immediate must be an integer in range [0, 255]
// CHECK-ERROR:          movi v0.2s, #-1
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: immediate must be an integer in range [0, 255]
// CHECK-ERROR:         mvni v1.4s, #256
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         bic v15.4h, #1, lsl #7
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         orr v31.2s, #1, lsl #25
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         movi v5.4h, #10, lsl #16
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         movi v5.8b, #1, lsl #8
// CHECK-ERROR:                         ^
//----------------------------------------------------------------------
// Vector Move Immediate Masked
// Vector Move Inverted Immediate Masked
//----------------------------------------------------------------------
      // out of range immediate (0 to 0xff)
      movi v0.2s, #-1, msl #8
      mvni v7.4s, #256, msl #16
      // out of range shift (8, 16)
      movi v3.2s, #1, msl #0
      mvni v17.4s, #255, msl #32
      // invalid vector type (2s, 4s)
      movi v5.4h, #31, msl #8

// CHECK-ERROR: error: immediate must be an integer in range [0, 255]
// CHECK-ERROR:         movi v0.2s, #-1, msl #8
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: immediate must be an integer in range [0, 255]
// CHECK-ERROR:         mvni v7.4s, #256, msl #16
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         movi v3.2s, #1, msl #0
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         mvni v17.4s, #255, msl #32
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         movi v5.4h, #31, msl #8
// CHECK-ERROR:                          ^

//----------------------------------------------------------------------
// Vector Immediate - per byte
//----------------------------------------------------------------------
        // out of range immediate (0 to 0xff)
        movi v0.8b, #-1
        movi v1.16b, #256

// CHECK-ERROR: error: immediate must be an integer in range [0, 255]
// CHECK-ERROR:         movi v0.8b, #-1
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: immediate must be an integer in range [0, 255]
// CHECK-ERROR:         movi v1.16b, #256
// CHECK-ERROR:                      ^

//----------------------------------------------------------------------
// Scalar Floating-point Reciprocal Estimate
//----------------------------------------------------------------------

    frecpe s19, h14
    frecpe d13, s13

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        frecpe s19, h14
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        frecpe d13, s13
// CHECK-ERROR:                    ^

//----------------------------------------------------------------------
// Scalar Floating-point Reciprocal Exponent
//----------------------------------------------------------------------

    frecpx s18, h10
    frecpx d16, s19

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        frecpx s18, h10
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        frecpx d16, s19
// CHECK-ERROR:                    ^

//----------------------------------------------------------------------
// Scalar Floating-point Reciprocal Square Root Estimate
//----------------------------------------------------------------------

    frsqrte s22, h13
    frsqrte d21, s12

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        frsqrte s22, h13
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        frsqrte d21, s12
// CHECK-ERROR:                     ^

//----------------------------------------------------------------------
// Vector Move Immediate - bytemask, per doubleword
//---------------------------------------------------------------------
        // invalid bytemask (0x00 or 0xff)
        movi v0.2d, #0x10ff00ff00ff00ff

// CHECK:ERROR: error: invalid operand for instruction
// CHECK:ERROR:         movi v0.2d, #0x10ff00ff00ff00ff
// CHECK:ERROR:                     ^

//----------------------------------------------------------------------
// Vector Move Immediate - bytemask, one doubleword
//----------------------------------------------------------------------
        // invalid bytemask (0x00 or 0xff)
        movi v0.2d, #0xffff00ff001f00ff

// CHECK:ERROR: error: invalid operand for instruction
// CHECK:ERROR:         movi v0.2d, #0xffff00ff001f00ff
// CHECK:ERROR:                     ^
//----------------------------------------------------------------------
// Vector Floating Point Move Immediate
//----------------------------------------------------------------------
        // invalid vector type (2s, 4s, 2d)
         fmov v0.4h, #1.0
         // invalid immediate (negative hexadecimal encoding)
         fmov v0.4s, #-0x0

// CHECK:ERROR: error: invalid operand for instruction
// CHECK:ERROR:         fmov v0.4h, #1.0
// CHECK:ERROR:              ^
// CHECK-ERROR: error: encoded floating point value out of range
// CHECK-ERROR:         fmov v0.4s, #-0x0
// CHECK-ERROR:                     ^

//----------------------------------------------------------------------
// Vector Move -  register
//----------------------------------------------------------------------
      // invalid vector type (8b, 16b)
      mov v0.2s, v31.8b
// CHECK:ERROR: error: invalid operand for instruction
// CHECK:ERROR:         mov v0.2s, v31.8b
// CHECK:ERROR:                ^

//----------------------------------------------------------------------
// Vector Absolute Difference and Accumulate (Signed, Unsigned)
//----------------------------------------------------------------------

        // Mismatched and invalid vector types (2d)
        saba v0.16b, v1.8b, v2.8b
        uaba v0.2d, v1.2d, v2.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         saba v0.16b, v1.8b, v2.8b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uaba v0.2d, v1.2d, v2.2d
// CHECK-ERROR:                ^

//----------------------------------------------------------------------
// Vector Absolute Difference and Accumulate (Signed, Unsigned)
// Vector Absolute Difference (Signed, Unsigned)

        // Mismatched and invalid vector types (2d)
        uaba v0.16b, v1.8b, v2.8b
        saba v0.2d, v1.2d, v2.2d
        uabd v0.4s, v1.2s, v2.2s
        sabd v0.4h, v1.8h, v8.8h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uaba v0.16b, v1.8b, v2.8b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         saba v0.2d, v1.2d, v2.2d
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uabd v0.4s, v1.2s, v2.2s
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sabd v0.4h, v1.8h, v8.8h
// CHECK-ERROR:                        ^

//----------------------------------------------------------------------
// Vector Absolute Difference (Floating Point)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types
        fabd v0.2s, v1.4s, v2.2d
        fabd v0.4h, v1.4h, v2.4h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fabd v0.2s, v1.4s, v2.2d
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fabd v0.4h, v1.4h, v2.4h
// CHECK-ERROR:                 ^
//----------------------------------------------------------------------
// Vector Multiply (Polynomial)
//----------------------------------------------------------------------

        // Mismatched and invalid vector types
         pmul v0.8b, v1.8b, v2.16b
         pmul v0.2s, v1.2s, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         pmul v0.8b, v1.8b, v2.16b
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         pmul v0.2s, v1.2s, v2.2s
// CHECK-ERROR:                 ^

//----------------------------------------------------------------------
// Scalar Integer Add and Sub
//----------------------------------------------------------------------

      // Mismatched registers
         add d0, s1, d2
         sub s1, d1, d2

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         add d0, s1, d2
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sub s1, d1, d2
// CHECK-ERROR:             ^

//----------------------------------------------------------------------
// Vector Reciprocal Step (Floating Point)
//----------------------------------------------------------------------

        // Mismatched and invalid vector types
         frecps v0.4s, v1.2d, v2.4s
         frecps v0.8h, v1.8h, v2.8h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        frecps v0.4s, v1.2d, v2.4s
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:        frecps v0.8h, v1.8h, v2.8h
// CHECK-ERROR:                  ^

//----------------------------------------------------------------------
// Vector Reciprocal Square Root Step (Floating Point)
//----------------------------------------------------------------------

        // Mismatched and invalid vector types
         frsqrts v0.2d, v1.2d, v2.2s
         frsqrts v0.4h, v1.4h, v2.4h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        frsqrts v0.2d, v1.2d, v2.2s
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:        frsqrts v0.4h, v1.4h, v2.4h
// CHECK-ERROR:                   ^


//----------------------------------------------------------------------
// Vector Absolute Compare Mask Less Than Or Equal (Floating Point)
//----------------------------------------------------------------------

        // Mismatched and invalid vector types
        facge v0.2d, v1.2s, v2.2d
        facge v0.4h, v1.4h, v2.4h
        facle v0.8h, v1.4h, v2.4h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        facge v0.2d, v1.2s, v2.2d
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:        facge v0.4h, v1.4h, v2.4h
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        facle v0.8h, v1.4h, v2.4h
// CHECK-ERROR:                 ^
//----------------------------------------------------------------------
// Vector Absolute Compare Mask Less Than (Floating Point)
//----------------------------------------------------------------------

        // Mismatched and invalid vector types
        facgt v0.2d, v1.2d, v2.4s
        facgt v0.8h, v1.8h, v2.8h
        faclt v0.8b, v1.8b, v2.8b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        facgt v0.2d, v1.2d, v2.4s
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:        facgt v0.8h, v1.8h, v2.8h
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        faclt v0.8b, v1.8b, v2.8b
// CHECK-ERROR:                 ^


//----------------------------------------------------------------------
// Vector Compare Mask Equal (Integer)
//----------------------------------------------------------------------

         // Mismatched vector types
         cmeq c0.2d, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        cmeq c0.2d, v1.2d, v2.2s
// CHECK-ERROR:                              ^

//----------------------------------------------------------------------
// Vector Compare Mask Higher or Same (Unsigned Integer)
// Vector Compare Mask Less or Same (Unsigned Integer)
// CMLS is alias for CMHS with operands reversed.
//----------------------------------------------------------------------

         // Mismatched vector types
         cmhs c0.4h, v1.8b, v2.8b
         cmls c0.16b, v1.16b, v2.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        cmhs c0.4h, v1.8b, v2.8b
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        cmls c0.16b, v1.16b, v2.2d
// CHECK-ERROR:                                ^

//----------------------------------------------------------------------
// Vector Compare Mask Greater Than or Equal (Integer)
// Vector Compare Mask Less Than or Equal (Integer)
// CMLE is alias for CMGE with operands reversed.
//----------------------------------------------------------------------

         // Mismatched vector types
         cmge c0.8h, v1.8b, v2.8b
         cmle c0.4h, v1.2s, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        cmge c0.8h, v1.8b, v2.8b
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         cmle c0.4h, v1.2s, v2.2s
// CHECK-ERROR:                        ^

//----------------------------------------------------------------------
// Vector Compare Mask Higher (Unsigned Integer)
// Vector Compare Mask Lower (Unsigned Integer)
// CMLO is alias for CMHI with operands reversed.
//----------------------------------------------------------------------

         // Mismatched vector types
         cmhi c0.4s, v1.4s, v2.16b
         cmlo c0.8b, v1.8b, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        cmhi c0.4s, v1.4s, v2.16b
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         cmlo c0.8b, v1.8b, v2.2s
// CHECK-ERROR:                               ^

//----------------------------------------------------------------------
// Vector Compare Mask Greater Than (Integer)
// Vector Compare Mask Less Than (Integer)
// CMLT is alias for CMGT with operands reversed.
//----------------------------------------------------------------------

         // Mismatched vector types
         cmgt c0.8b, v1.4s, v2.16b
         cmlt c0.8h, v1.16b, v2.4s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         cmgt c0.8b, v1.4s, v2.16b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         cmlt c0.8h, v1.16b, v2.4s
// CHECK-ERROR:                        ^

//----------------------------------------------------------------------
// Vector Compare Mask Bitwise Test (Integer)
//----------------------------------------------------------------------

         // Mismatched vector types
         cmtst c0.16b, v1.16b, v2.4s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         cmtst c0.16b, v1.16b, v2.4s
// CHECK-ERROR:                                  ^

//----------------------------------------------------------------------
// Vector Compare Mask Equal (Floating Point)
//----------------------------------------------------------------------

        // Mismatched and invalid vector types
        fcmeq v0.2d, v1.2s, v2.2d
        fcmeq v0.16b, v1.16b, v2.16b
        fcmeq v0.8b, v1.4h, v2.4h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmeq v0.2d, v1.2s, v2.2d
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmeq v0.16b, v1.16b, v2.16b
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmeq v0.8b, v1.4h, v2.4h
// CHECK-ERROR:                 ^

//----------------------------------------------------------------------
// Vector Compare Mask Greater Than Or Equal (Floating Point)
// Vector Compare Mask Less Than Or Equal (Floating Point)
// FCMLE is alias for FCMGE with operands reversed.
//----------------------------------------------------------------------

        // Mismatched and invalid vector types
         fcmge v31.4s, v29.2s, v28.4s
         fcmge v3.8b, v8.2s, v12.2s
         fcmle v17.8h, v15.2d, v13.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmge v31.4s, v29.2s, v28.4s
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmge v3.8b, v8.2s, v12.2s
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmle v17.8h, v15.2d, v13.2d
// CHECK-ERROR:                 ^

//----------------------------------------------------------------------
// Vector Compare Mask Greater Than (Floating Point)
// Vector Compare Mask Less Than (Floating Point)
// FCMLT is alias for FCMGT with operands reversed.
//----------------------------------------------------------------------

        // Mismatched and invalid vector types
         fcmgt v0.2d, v31.2s, v16.2s
         fcmgt v4.4s, v7.4s, v15.4h
         fcmlt v29.2d, v5.2d, v2.16b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmgt v0.2d, v31.2s, v16.2s
// CHECK-ERROR:                         ^

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmgt v4.4s, v7.4s, v15.4h
// CHECK-ERROR:                                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmlt v29.2d, v5.2d, v2.16b
// CHECK-ERROR:                                ^

//----------------------------------------------------------------------
// Vector Compare Mask Equal to Zero (Integer)
//----------------------------------------------------------------------
        // Mismatched vector types and invalid imm
         // Mismatched vector types
         cmeq c0.2d, v1.2s, #0
         cmeq c0.2d, v1.2d, #1

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        cmeq c0.2d, v1.2s, #0
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        cmeq c0.2d, v1.2d, #1
// CHECK-ERROR:                            ^

//----------------------------------------------------------------------
// Vector Compare Mask Greater Than or Equal to Zero (Signed Integer)
//----------------------------------------------------------------------
        // Mismatched vector types and invalid imm
         cmge c0.8h, v1.8b, #0
         cmge c0.4s, v1.4s, #-1

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        cmge c0.8h, v1.8b, #0
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         cmge c0.4s, v1.4s, #-1
// CHECK-ERROR:                             ^

//----------------------------------------------------------------------
// Vector Compare Mask Greater Than Zero (Signed Integer)
//----------------------------------------------------------------------
        // Mismatched vector types and invalid imm
         cmgt c0.8b, v1.4s, #0
         cmgt c0.8b, v1.8b, #-255

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         cmgt c0.8b, v1.4s, #0
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         cmgt c0.8b, v1.8b, #-255
// CHECK-ERROR:                             ^

//----------------------------------------------------------------------
// Vector Compare Mask Less Than or Equal To Zero (Signed Integer)
//----------------------------------------------------------------------
        // Mismatched vector types and invalid imm
         cmle c0.4h, v1.2s, #0
         cmle c0.16b, v1.16b, #16

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        cmle c0.4h, v1.2s, #0
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         cmle c0.16b, v1.16b, #16
// CHECK-ERROR:                               ^
//----------------------------------------------------------------------
// Vector Compare Mask Less Than Zero (Signed Integer)
//----------------------------------------------------------------------
        // Mismatched vector types and invalid imm
         cmlt c0.8h, v1.16b, #0
         cmlt c0.8h, v1.8h, #-15

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         cmlt c0.8h, v1.16b, #0
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         cmlt c0.8h, v1.8h, #-15
// CHECK-ERROR:                             ^

//----------------------------------------------------------------------
// Vector Compare Mask Equal to Zero (Floating Point)
//----------------------------------------------------------------------

        // Mismatched and invalid vector types, invalid imm
        fcmeq v0.2d, v1.2s, #0.0
        fcmeq v0.16b, v1.16b, #0.0
        fcmeq v0.8b, v1.4h, #1.0
        fcmeq v0.8b, v1.4h, #1

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmeq v0.2d, v1.2s, #0.0
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmeq v0.16b, v1.16b, #0.0
// CHECK-ERROR:                 ^


// CHECK-ERROR: error: expected floating-point constant #0.0
// CHECK-ERROR:        fcmeq v0.8b, v1.4h, #1.0
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmeq v0.8b, v1.4h, #1
// CHECK-ERROR:                             ^

//----------------------------------------------------------------------
// Vector Compare Mask Greater Than or Equal to Zero (Floating Point)
//----------------------------------------------------------------------

        // Mismatched and invalid vector types, invalid imm
         fcmge v31.4s, v29.2s, #0.0
         fcmge v3.8b, v8.2s, #0.0
         fcmle v17.8h, v15.2d, #-1.0
         fcmle v17.8h, v15.2d, #2

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmge v31.4s, v29.2s, #0.0
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmge v3.8b, v8.2s, #0.0
// CHECK-ERROR:                 ^


// CHECK-ERROR: error: expected floating-point constant #0.0
// CHECK-ERROR:        fcmle v17.8h, v15.2d, #-1.0
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmle v17.8h, v15.2d, #2
// CHECK-ERROR:                               ^

//----------------------------------------------------------------------
// Vector Compare Mask Greater Than Zero (Floating Point)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types, invalid imm
         fcmgt v0.2d, v31.2s, #0.0
         fcmgt v4.4s, v7.4h, #0.0
         fcmlt v29.2d, v5.2d, #255.0
         fcmlt v29.2d, v5.2d, #255

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmgt v0.2d, v31.2s, #0.0
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmgt v4.4s, v7.4h, #0.0
// CHECK-ERROR:                        ^


// CHECK-ERROR: error: expected floating-point constant #0.0
// CHECK-ERROR:        fcmlt v29.2d, v5.2d, #255.0
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmlt v29.2d, v5.2d, #255
// CHECK-ERROR:                              ^

//----------------------------------------------------------------------
// Vector Compare Mask Less Than or Equal To Zero (Floating Point)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types, invalid imm
         fcmge v31.4s, v29.2s, #0.0
         fcmge v3.8b, v8.2s, #0.0
         fcmle v17.2d, v15.2d, #15.0
         fcmle v17.2d, v15.2d, #15

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmge v31.4s, v29.2s, #0.0
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmge v3.8b, v8.2s, #0.0
// CHECK-ERROR:                 ^


// CHECK-ERROR: error: expected floating-point constant #0.0
// CHECK-ERROR:        fcmle v17.2d, v15.2d, #15.0
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmle v17.2d, v15.2d, #15
// CHECK-ERROR:                              ^

//----------------------------------------------------------------------
// Vector Compare Mask Less Than Zero (Floating Point)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types, invalid imm
         fcmgt v0.2d, v31.2s, #0.0
         fcmgt v4.4s, v7.4h, #0.0
         fcmlt v29.2d, v5.2d, #16.0
         fcmlt v29.2d, v5.2d, #2

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmgt v0.2d, v31.2s, #0.0
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmgt v4.4s, v7.4h, #0.0
// CHECK-ERROR:                        ^


// CHECK-ERROR: error: expected floating-point constant #0.0
// CHECK-ERROR:        fcmlt v29.2d, v5.2d, #16.0
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcmlt v29.2d, v5.2d, #2
// CHECK-ERROR:                              ^

/-----------------------------------------------------------------------
// Vector Integer Halving Add (Signed)
// Vector Integer Halving Add (Unsigned)
// Vector Integer Halving Sub (Signed)
// Vector Integer Halving Sub (Unsigned)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types (2d)
        shadd v0.2d, v1.2d, v2.2d
        uhadd v4.2s, v5.2s, v5.4h
        shsub v11.4h, v12.8h, v13.4h
        uhsub v31.16b, v29.8b, v28.8b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        shadd v0.2d, v1.2d, v2.2d
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uhadd v4.2s, v5.2s, v5.4h
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        shsub v11.4h, v12.8h, v13.4h
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uhsub v31.16b, v29.8b, v28.8b
// CHECK-ERROR:                          ^

//----------------------------------------------------------------------
// Vector Integer Rouding Halving Add (Signed)
// Vector Integer Rouding Halving Add (Unsigned)
//----------------------------------------------------------------------

        // Mismatched and invalid vector types (2d)
        srhadd v0.2s, v1.2s, v2.2d
        urhadd v0.16b, v1.16b, v2.8h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        srhadd v0.2s, v1.2s, v2.2d
// CHECK-ERROR:                                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        urhadd v0.16b, v1.16b, v2.8h
// CHECK-ERROR:                                  ^

//----------------------------------------------------------------------
// Vector Integer Saturating Add (Signed)
// Vector Integer Saturating Add (Unsigned)
// Vector Integer Saturating Sub (Signed)
// Vector Integer Saturating Sub (Unsigned)
//----------------------------------------------------------------------

        // Mismatched vector types
        sqadd v0.2s, v1.2s, v2.2d
        uqadd v31.8h, v1.4h, v2.4h
        sqsub v10.8h, v1.16b, v2.16b
        uqsub v31.8b, v1.8b, v2.4s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqadd v0.2s, v1.2s, v2.2d
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uqadd v31.8h, v1.4h, v2.4h
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqsub v10.8h, v1.16b, v2.16b
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uqsub v31.8b, v1.8b, v2.4s
// CHECK-ERROR:                                ^

//----------------------------------------------------------------------
// Scalar Integer Saturating Add (Signed)
// Scalar Integer Saturating Add (Unsigned)
// Scalar Integer Saturating Sub (Signed)
// Scalar Integer Saturating Sub (Unsigned)
//----------------------------------------------------------------------

      // Mismatched registers
         sqadd d0, s31, d2
         uqadd s0, s1, d2
         sqsub b0, b2, s18
         uqsub h1, h2, d2

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqadd d0, s31, d2
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uqadd s0, s1, d2
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqsub b0, b2, s18
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uqsub h1, h2, d2
// CHECK-ERROR:                      ^

//----------------------------------------------------------------------
// Scalar Integer Saturating Doubling Multiply Half High (Signed)
//----------------------------------------------------------------------

    sqdmulh h10, s11, h12
    sqdmulh s20, h21, s2

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmulh h10, s11, h12
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmulh s20, h21, s2
// CHECK-ERROR:                     ^

//------------------------------------------------------------------------
// Scalar Integer Saturating Rounding Doubling Multiply Half High (Signed)
//------------------------------------------------------------------------

    sqrdmulh h10, s11, h12
    sqrdmulh s20, h21, s2

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqrdmulh h10, s11, h12
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqrdmulh s20, h21, s2
// CHECK-ERROR:                      ^

//----------------------------------------------------------------------
// Vector Shift Left (Signed and Unsigned Integer)
//----------------------------------------------------------------------
        // Mismatched vector types
        sshl v0.4s, v15.2s, v16.2s
        ushl v1.16b, v25.16b, v6.8h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sshl v0.4s, v15.2s, v16.2s
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        ushl v1.16b, v25.16b, v6.8h
// CHECK-ERROR:                                 ^

//----------------------------------------------------------------------
// Vector Saturating Shift Left (Signed and Unsigned Integer)
//----------------------------------------------------------------------
        // Mismatched vector types
        sqshl v0.2s, v15.4s, v16.2d
        uqshl v1.8b, v25.4h, v6.8h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqshl v0.2s, v15.4s, v16.2d 
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uqshl v1.8b, v25.4h, v6.8h
// CHECK-ERROR:                         ^

//----------------------------------------------------------------------
// Vector Rouding Shift Left (Signed and Unsigned Integer)
//----------------------------------------------------------------------
        // Mismatched vector types
        srshl v0.8h, v15.8h, v16.16b
        urshl v1.2d, v25.2d, v6.4s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        srshl v0.8h, v15.8h, v16.16b
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        urshl v1.2d, v25.2d, v6.4s
// CHECK-ERROR:                                ^

//----------------------------------------------------------------------
// Vector Saturating Rouding Shift Left (Signed and Unsigned Integer)
//----------------------------------------------------------------------
        // Mismatched vector types
        sqrshl v0.2s, v15.8h, v16.16b
        uqrshl v1.4h, v25.4h,  v6.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqrshl v0.2s, v15.8h, v16.16b
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uqrshl v1.4h, v25.4h,  v6.2d
// CHECK-ERROR:                                  ^

//----------------------------------------------------------------------
// Scalar Integer Shift Left (Signed, Unsigned)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types
        sshl d0, d1, s2
        ushl b2, b0, b1

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sshl d0, d1, s2
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        ushl b2, b0, b1
// CHECK-ERROR:             ^

//----------------------------------------------------------------------
// Scalar Integer Saturating Shift Left (Signed, Unsigned)
//----------------------------------------------------------------------

        // Mismatched vector types
        sqshl b0, s1, b0
        uqshl h0, b1, h0
        sqshl s0, h1, s0
        uqshl d0, b1, d0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqshl b0, s1, b0
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uqshl h0, b1, h0
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqshl s0, h1, s0
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uqshl d0, b1, d0
// CHECK-ERROR:                  ^

//----------------------------------------------------------------------
// Scalar Integer Rouding Shift Left (Signed, Unsigned)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types
        srshl h0, h1, h2
        urshl s0, s1, s2

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        srshl h0, h1, h2
// CHECK-ERROR:              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        urshl s0, s1, s2
// CHECK-ERROR:              ^


//----------------------------------------------------------------------
// Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned)
//----------------------------------------------------------------------

        // Mismatched vector types
        sqrshl b0, b1, s0
        uqrshl h0, h1, b0
        sqrshl s0, s1, h0
        uqrshl d0, d1, b0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqrshl b0, b1, s0
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uqrshl h0, h1, b0
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqrshl s0, s1, h0
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uqrshl d0, d1, b0
// CHECK-ERROR:                       ^


//----------------------------------------------------------------------
// Vector Maximum (Signed, Unsigned)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types
        smax v0.2d, v1.2d, v2.2d
        umax v0.4h, v1.4h, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smax v0.2d, v1.2d, v2.2d
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umax v0.4h, v1.4h, v2.2s
// CHECK-ERROR:                              ^

//----------------------------------------------------------------------
// Vector Minimum (Signed, Unsigned)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types
        smin v0.2d, v1.2d, v2.2d
        umin v0.2s, v1.2s, v2.8b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smin v0.2d, v1.2d, v2.2d
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umin v0.2s, v1.2s, v2.8b
// CHECK-ERROR:                             ^


//----------------------------------------------------------------------
// Vector Maximum (Floating Point)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types
        fmax v0.2s, v1.2s, v2.4s
        fmax v0.8b, v1.8b, v2.8b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fmax v0.2s, v1.2s, v2.4s
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fmax v0.8b, v1.8b, v2.8b
// CHECK-ERROR:                ^
//----------------------------------------------------------------------
// Vector Minimum (Floating Point)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types
        fmin v0.4s, v1.4s, v2.2d
        fmin v0.8h, v1.8h, v2.8h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fmin v0.4s, v1.4s, v2.2d
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:        fmin v0.8h, v1.8h, v2.8h
// CHECK-ERROR:                ^

//----------------------------------------------------------------------
// Vector maxNum (Floating Point)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types
        fmaxnm v0.2s, v1.2s, v2.2d
        fmaxnm v0.4h, v1.8h, v2.4h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fmaxnm v0.2s, v1.2s, v2.2d
// CHECK-ERROR:                                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fmaxnm v0.4h, v1.8h, v2.4h
// CHECK-ERROR:                  ^

//----------------------------------------------------------------------
// Vector minNum (Floating Point)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types
        fminnm v0.4s, v1.2s, v2.4s
        fminnm v0.16b, v0.16b, v0.16b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fminnm v0.4s, v1.2s, v2.4s
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fminnm v0.16b, v0.16b, v0.16b
// CHECK-ERROR:                  ^


//----------------------------------------------------------------------
// Vector Maximum Pairwise (Signed, Unsigned)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types
        smaxp v0.2d, v1.2d, v2.2d
        umaxp v0.4h, v1.4h, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smaxp v0.2d, v1.2d, v2.2d
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umaxp v0.4h, v1.4h, v2.2s
// CHECK-ERROR:                               ^

//----------------------------------------------------------------------
// Vector Minimum Pairwise (Signed, Unsigned)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types
        sminp v0.2d, v1.2d, v2.2d
        uminp v0.2s, v1.2s, v2.8b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sminp v0.2d, v1.2d, v2.2d
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uminp v0.2s, v1.2s, v2.8b
// CHECK-ERROR:                               ^


//----------------------------------------------------------------------
// Vector Maximum Pairwise (Floating Point)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types
        fmaxp v0.2s, v1.2s, v2.4s
        fmaxp v0.8b, v1.8b, v2.8b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fmaxp v0.2s, v1.2s, v2.4s
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fmaxp v0.8b, v1.8b, v2.8b
// CHECK-ERROR:                 ^
//----------------------------------------------------------------------
// Vector Minimum Pairwise (Floating Point)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types
        fminp v0.4s, v1.4s, v2.2d
        fminp v0.8h, v1.8h, v2.8h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fminp v0.4s, v1.4s, v2.2d
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:        fminp v0.8h, v1.8h, v2.8h
// CHECK-ERROR:                 ^

//----------------------------------------------------------------------
// Vector maxNum Pairwise (Floating Point)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types
        fmaxnmp v0.2s, v1.2s, v2.2d
        fmaxnmp v0.4h, v1.8h, v2.4h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fmaxnmp v0.2s, v1.2s, v2.2d
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fmaxnmp v0.4h, v1.8h, v2.4h
// CHECK-ERROR:                   ^

//----------------------------------------------------------------------
// Vector minNum Pairwise (Floating Point)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types
        fminnmp v0.4s, v1.2s, v2.4s
        fminnmp v0.16b, v0.16b, v0.16b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fminnmp v0.4s, v1.2s, v2.4s
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fminnmp v0.16b, v0.16b, v0.16b
// CHECK-ERROR:                   ^


//----------------------------------------------------------------------
// Vector Add Pairwise (Integer)
//----------------------------------------------------------------------

        // Mismatched vector types
        addp v0.16b, v1.8b, v2.8b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         addp v0.16b, v1.8b, v2.8b
// CHECK-ERROR:                         ^

//----------------------------------------------------------------------
// Vector Add Pairwise (Floating Point)
//----------------------------------------------------------------------
        // Mismatched and invalid vector types
        faddp v0.16b, v1.8b, v2.8b
        faddp v0.2d, v1.2d, v2.8h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         faddp v0.16b, v1.8b, v2.8b
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         faddp v0.2d, v1.2d, v2.8h
// CHECK-ERROR:                                ^


//----------------------------------------------------------------------
// Vector Saturating Doubling Multiply High
//----------------------------------------------------------------------
         // Mismatched and invalid vector types
         sqdmulh v2.4h, v25.8h, v3.4h
         sqdmulh v12.2d, v5.2d, v13.2d
         sqdmulh v3.8b, v1.8b, v30.8b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqdmulh v2.4h, v25.8h, v3.4h
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqdmulh v12.2d, v5.2d, v13.2d
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqdmulh v3.8b, v1.8b, v30.8b
// CHECK-ERROR:                    ^

//----------------------------------------------------------------------
// Vector Saturating Rouding Doubling Multiply High
//----------------------------------------------------------------------
         // Mismatched and invalid vector types
         sqrdmulh v2.2s, v25.4s, v3.4s
         sqrdmulh v12.16b, v5.16b, v13.16b
         sqrdmulh v3.4h, v1.4h, v30.2d


// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqrdmulh v2.2s, v25.4s, v3.4s
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqrdmulh v12.16b, v5.16b, v13.16b
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqrdmulh v3.4h, v1.4h, v30.2d
// CHECK-ERROR:                                    ^

//----------------------------------------------------------------------
// Vector Multiply Extended
//----------------------------------------------------------------------
         // Mismatched and invalid vector types
      fmulx v21.2s, v5.2s, v13.2d
      fmulx v1.4h, v25.4h, v3.4h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fmulx v21.2s, v5.2s, v13.2d
// CHECK-ERROR:                                  ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fmulx v1.4h, v25.4h, v3.4h
// CHECK-ERROR:                  ^

//------------------------------------------------------------------------------
// Vector Shift Left by Immediate
//------------------------------------------------------------------------------
         // Mismatched vector types and out of range
         shl v0.4s, v15,2s, #3
         shl v0.2d, v17.4s, #3
         shl v0.8b, v31.8b, #-1
         shl v0.8b, v31.8b, #8
         shl v0.4s, v21.4s, #32
         shl v0.2d, v1.2d, #64


// CHECK-ERROR: error: unexpected token in argument list
// CHECK-ERROR:         shl v0.4s, v15,2s, #3
// CHECK-ERROR:                         ^

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         shl v0.2d, v17.4s, #3
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
// CHECK-ERROR:         shl v0.8b, v31.8b, #-1
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
// CHECK-ERROR:         shl v0.8b, v31.8b, #8
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR:         shl v0.4s, v21.4s, #32
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR:         shl v0.2d, v1.2d, #64
// CHECK-ERROR:                           ^

//----------------------------------------------------------------------
// Vector Shift Left Long by Immediate
//----------------------------------------------------------------------
        // Mismatched vector types
        sshll v0.4s, v15.2s, #3
        ushll v1.16b, v25.16b, #6
        sshll2 v0.2d, v3.8s, #15
        ushll2 v1.4s, v25.4s, #7

        // Out of range 
        sshll v0.8h, v1.8b, #-1
        sshll v0.8h, v1.8b, #9
        ushll v0.4s, v1.4h, #17
        ushll v0.2d, v1.2s, #33
        sshll2 v0.8h, v1.16b, #9
        sshll2 v0.4s, v1.8h, #17
        ushll2 v0.2d, v1.4s, #33

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sshll v0.4s, v15.2s, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        ushll v1.16b, v25.16b, #6
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: invalid vector kind qualifier
// CHECK-ERROR:        sshll2 v0.2d, v3.8s, #15
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        ushll2 v1.4s, v25.4s, #7
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
// CHECK-ERROR:        sshll v0.8h, v1.8b, #-1
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
// CHECK-ERROR:        sshll v0.8h, v1.8b, #9
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR:        ushll v0.4s, v1.4h, #17
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR:        ushll v0.2d, v1.2s, #33
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
// CHECK-ERROR:        sshll2 v0.8h, v1.16b, #9
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR:        sshll2 v0.4s, v1.8h, #17
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR:        ushll2 v0.2d, v1.4s, #33
// CHECK-ERROR:                             ^


//------------------------------------------------------------------------------
// Vector shift right by immediate
//------------------------------------------------------------------------------
         sshr v0.8b, v1.8h, #3
         sshr v0.4h, v1.4s, #3
         sshr v0.2s, v1.2d, #3
         sshr v0.16b, v1.16b, #9
         sshr v0.8h, v1.8h, #17
         sshr v0.4s, v1.4s, #33
         sshr v0.2d, v1.2d, #65

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sshr v0.8b, v1.8h, #3
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sshr v0.4h, v1.4s, #3
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sshr v0.2s, v1.2d, #3
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:         sshr v0.16b, v1.16b, #9
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:         sshr v0.8h, v1.8h, #17
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         sshr v0.4s, v1.4s, #33
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:         sshr v0.2d, v1.2d, #65
// CHECK-ERROR:                            ^

//------------------------------------------------------------------------------
// Vector  shift right by immediate
//------------------------------------------------------------------------------
         ushr v0.8b, v1.8h, #3
         ushr v0.4h, v1.4s, #3
         ushr v0.2s, v1.2d, #3
         ushr v0.16b, v1.16b, #9
         ushr v0.8h, v1.8h, #17
         ushr v0.4s, v1.4s, #33
         ushr v0.2d, v1.2d, #65

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ushr v0.8b, v1.8h, #3
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ushr v0.4h, v1.4s, #3
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ushr v0.2s, v1.2d, #3
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:         ushr v0.16b, v1.16b, #9
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:         ushr v0.8h, v1.8h, #17
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         ushr v0.4s, v1.4s, #33
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:         ushr v0.2d, v1.2d, #65
// CHECK-ERROR:                            ^

//------------------------------------------------------------------------------
// Vector shift right and accumulate by immediate
//------------------------------------------------------------------------------
         ssra v0.8b, v1.8h, #3
         ssra v0.4h, v1.4s, #3
         ssra v0.2s, v1.2d, #3
         ssra v0.16b, v1.16b, #9
         ssra v0.8h, v1.8h, #17
         ssra v0.4s, v1.4s, #33
         ssra v0.2d, v1.2d, #65

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ssra v0.8b, v1.8h, #3
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ssra v0.4h, v1.4s, #3
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ssra v0.2s, v1.2d, #3
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:         ssra v0.16b, v1.16b, #9
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:         ssra v0.8h, v1.8h, #17
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         ssra v0.4s, v1.4s, #33
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:         ssra v0.2d, v1.2d, #65
// CHECK-ERROR:                            ^

//------------------------------------------------------------------------------
// Vector  shift right and accumulate by immediate
//------------------------------------------------------------------------------
         usra v0.8b, v1.8h, #3
         usra v0.4h, v1.4s, #3
         usra v0.2s, v1.2d, #3
         usra v0.16b, v1.16b, #9
         usra v0.8h, v1.8h, #17
         usra v0.4s, v1.4s, #33
         usra v0.2d, v1.2d, #65

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         usra v0.8b, v1.8h, #3
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         usra v0.4h, v1.4s, #3
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         usra v0.2s, v1.2d, #3
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:         usra v0.16b, v1.16b, #9
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:         usra v0.8h, v1.8h, #17
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         usra v0.4s, v1.4s, #33
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:         usra v0.2d, v1.2d, #65
// CHECK-ERROR:                            ^

//------------------------------------------------------------------------------
// Vector rounding shift right by immediate
//------------------------------------------------------------------------------
         srshr v0.8b, v1.8h, #3
         srshr v0.4h, v1.4s, #3
         srshr v0.2s, v1.2d, #3
         srshr v0.16b, v1.16b, #9
         srshr v0.8h, v1.8h, #17
         srshr v0.4s, v1.4s, #33
         srshr v0.2d, v1.2d, #65

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         srshr v0.8b, v1.8h, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         srshr v0.4h, v1.4s, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         srshr v0.2s, v1.2d, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:         srshr v0.16b, v1.16b, #9
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:         srshr v0.8h, v1.8h, #17
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         srshr v0.4s, v1.4s, #33
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:         srshr v0.2d, v1.2d, #65
// CHECK-ERROR:                             ^

//------------------------------------------------------------------------------
// Vecotr rounding shift right by immediate
//------------------------------------------------------------------------------
         urshr v0.8b, v1.8h, #3
         urshr v0.4h, v1.4s, #3
         urshr v0.2s, v1.2d, #3
         urshr v0.16b, v1.16b, #9
         urshr v0.8h, v1.8h, #17
         urshr v0.4s, v1.4s, #33
         urshr v0.2d, v1.2d, #65

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         urshr v0.8b, v1.8h, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         urshr v0.4h, v1.4s, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         urshr v0.2s, v1.2d, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:         urshr v0.16b, v1.16b, #9
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:         urshr v0.8h, v1.8h, #17
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         urshr v0.4s, v1.4s, #33
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:         urshr v0.2d, v1.2d, #65
// CHECK-ERROR:                             ^

//------------------------------------------------------------------------------
// Vector rounding shift right and accumulate by immediate
//------------------------------------------------------------------------------
         srsra v0.8b, v1.8h, #3
         srsra v0.4h, v1.4s, #3
         srsra v0.2s, v1.2d, #3
         srsra v0.16b, v1.16b, #9
         srsra v0.8h, v1.8h, #17
         srsra v0.4s, v1.4s, #33
         srsra v0.2d, v1.2d, #65

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         srsra v0.8b, v1.8h, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         srsra v0.4h, v1.4s, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         srsra v0.2s, v1.2d, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:         srsra v0.16b, v1.16b, #9
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:         srsra v0.8h, v1.8h, #17
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         srsra v0.4s, v1.4s, #33
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:         srsra v0.2d, v1.2d, #65
// CHECK-ERROR:                             ^

//------------------------------------------------------------------------------
// Vector rounding shift right and accumulate by immediate
//------------------------------------------------------------------------------
         ursra v0.8b, v1.8h, #3
         ursra v0.4h, v1.4s, #3
         ursra v0.2s, v1.2d, #3
         ursra v0.16b, v1.16b, #9
         ursra v0.8h, v1.8h, #17
         ursra v0.4s, v1.4s, #33
         ursra v0.2d, v1.2d, #65

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ursra v0.8b, v1.8h, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ursra v0.4h, v1.4s, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ursra v0.2s, v1.2d, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:         ursra v0.16b, v1.16b, #9
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:         ursra v0.8h, v1.8h, #17
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         ursra v0.4s, v1.4s, #33
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:         ursra v0.2d, v1.2d, #65
// CHECK-ERROR:                             ^

//------------------------------------------------------------------------------
// Vector shift right and insert by immediate
//------------------------------------------------------------------------------
         sri v0.8b, v1.8h, #3
         sri v0.4h, v1.4s, #3
         sri v0.2s, v1.2d, #3
         sri v0.16b, v1.16b, #9
         sri v0.8h, v1.8h, #17
         sri v0.4s, v1.4s, #33
         sri v0.2d, v1.2d, #65

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sri v0.8b, v1.8h, #3
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sri v0.4h, v1.4s, #3
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sri v0.2s, v1.2d, #3
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:         sri v0.16b, v1.16b, #9
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:         sri v0.8h, v1.8h, #17
// CHECK-ERROR:                           ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         sri v0.4s, v1.4s, #33
// CHECK-ERROR:                           ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:         sri v0.2d, v1.2d, #65
// CHECK-ERROR:                           ^

//------------------------------------------------------------------------------
// Vector shift left and insert by immediate
//------------------------------------------------------------------------------
         sli v0.8b, v1.8h, #3
         sli v0.4h, v1.4s, #3
         sli v0.2s, v1.2d, #3
         sli v0.16b, v1.16b, #8
         sli v0.8h, v1.8h, #16
         sli v0.4s, v1.4s, #32
         sli v0.2d, v1.2d, #64

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sli v0.8b, v1.8h, #3
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sli v0.4h, v1.4s, #3
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sli v0.2s, v1.2d, #3
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
// CHECK-ERROR:         sli v0.16b, v1.16b, #8
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR:         sli v0.8h, v1.8h, #16
// CHECK-ERROR:                           ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR:         sli v0.4s, v1.4s, #32
// CHECK-ERROR:                           ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR:         sli v0.2d, v1.2d, #64
// CHECK-ERROR:                           ^

//------------------------------------------------------------------------------
// Vector saturating shift left unsigned by immediate
//------------------------------------------------------------------------------
         sqshlu v0.8b, v1.8h, #3
         sqshlu v0.4h, v1.4s, #3
         sqshlu v0.2s, v1.2d, #3
         sqshlu v0.16b, v1.16b, #8
         sqshlu v0.8h, v1.8h, #16
         sqshlu v0.4s, v1.4s, #32
         sqshlu v0.2d, v1.2d, #64

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqshlu v0.8b, v1.8h, #3
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqshlu v0.4h, v1.4s, #3
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqshlu v0.2s, v1.2d, #3
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
// CHECK-ERROR:         sqshlu v0.16b, v1.16b, #8
// CHECK-ERROR:                                ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR:         sqshlu v0.8h, v1.8h, #16
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR:         sqshlu v0.4s, v1.4s, #32
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR:         sqshlu v0.2d, v1.2d, #64
// CHECK-ERROR:                              ^

//------------------------------------------------------------------------------
// Vector saturating shift left by immediate
//------------------------------------------------------------------------------
         sqshl v0.8b, v1.8h, #3
         sqshl v0.4h, v1.4s, #3
         sqshl v0.2s, v1.2d, #3
         sqshl v0.16b, v1.16b, #8
         sqshl v0.8h, v1.8h, #16
         sqshl v0.4s, v1.4s, #32
         sqshl v0.2d, v1.2d, #64

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqshl v0.8b, v1.8h, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqshl v0.4h, v1.4s, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqshl v0.2s, v1.2d, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
// CHECK-ERROR:         sqshl v0.16b, v1.16b, #8
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR:         sqshl v0.8h, v1.8h, #16
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR:         sqshl v0.4s, v1.4s, #32
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR:         sqshl v0.2d, v1.2d, #64
// CHECK-ERROR:                             ^

//------------------------------------------------------------------------------
// Vector saturating shift left by immediate
//------------------------------------------------------------------------------
         uqshl v0.8b, v1.8h, #3
         uqshl v0.4h, v1.4s, #3
         uqshl v0.2s, v1.2d, #3
         uqshl v0.16b, v1.16b, #8
         uqshl v0.8h, v1.8h, #16
         uqshl v0.4s, v1.4s, #32
         uqshl v0.2d, v1.2d, #64

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uqshl v0.8b, v1.8h, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uqshl v0.4h, v1.4s, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uqshl v0.2s, v1.2d, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
// CHECK-ERROR:         uqshl v0.16b, v1.16b, #8
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR:         uqshl v0.8h, v1.8h, #16
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR:         uqshl v0.4s, v1.4s, #32
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR:         uqshl v0.2d, v1.2d, #64
// CHECK-ERROR:                             ^

//------------------------------------------------------------------------------
// Vector shift right narrow by immediate
//------------------------------------------------------------------------------
         shrn v0.8b, v1.8b, #3
         shrn v0.4h, v1.4h, #3
         shrn v0.2s, v1.2s, #3
         shrn2 v0.16b, v1.8h, #17
         shrn2 v0.8h, v1.4s, #33
         shrn2 v0.4s, v1.2d, #65

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         shrn v0.8b, v1.8b, #3
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         shrn v0.4h, v1.4h, #3
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         shrn v0.2s, v1.2s, #3
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:         shrn2 v0.16b, v1.8h, #17
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:         shrn2 v0.8h, v1.4s, #33
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         shrn2 v0.4s, v1.2d, #65
// CHECK-ERROR:                             ^

//------------------------------------------------------------------------------
// Vector saturating shift right unsigned narrow by immediate
//------------------------------------------------------------------------------
         sqshrun v0.8b, v1.8b, #3
         sqshrun v0.4h, v1.4h, #3
         sqshrun v0.2s, v1.2s, #3
         sqshrun2 v0.16b, v1.8h, #17
         sqshrun2 v0.8h, v1.4s, #33
         sqshrun2 v0.4s, v1.2d, #65

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqshrun v0.8b, v1.8b, #3
// CHECK-ERROR:                           ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqshrun v0.4h, v1.4h, #3
// CHECK-ERROR:                           ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqshrun v0.2s, v1.2s, #3
// CHECK-ERROR:                           ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:         sqshrun2 v0.16b, v1.8h, #17
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:         sqshrun2 v0.8h, v1.4s, #33
// CHECK-ERROR:                                ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         sqshrun2 v0.4s, v1.2d, #65
// CHECK-ERROR:                                ^

//------------------------------------------------------------------------------
// Vector rounding shift right narrow by immediate
//------------------------------------------------------------------------------
         rshrn v0.8b, v1.8b, #3
         rshrn v0.4h, v1.4h, #3
         rshrn v0.2s, v1.2s, #3
         rshrn2 v0.16b, v1.8h, #17
         rshrn2 v0.8h, v1.4s, #33
         rshrn2 v0.4s, v1.2d, #65

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         rshrn v0.8b, v1.8b, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         rshrn v0.4h, v1.4h, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         rshrn v0.2s, v1.2s, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:         rshrn2 v0.16b, v1.8h, #17
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:         rshrn2 v0.8h, v1.4s, #33
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         rshrn2 v0.4s, v1.2d, #65
// CHECK-ERROR:                              ^

//------------------------------------------------------------------------------
// Vector saturating shift right rounded unsigned narrow by immediate
//------------------------------------------------------------------------------
         sqrshrun v0.8b, v1.8b, #3
         sqrshrun v0.4h, v1.4h, #3
         sqrshrun v0.2s, v1.2s, #3
         sqrshrun2 v0.16b, v1.8h, #17
         sqrshrun2 v0.8h, v1.4s, #33
         sqrshrun2 v0.4s, v1.2d, #65

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqrshrun v0.8b, v1.8b, #3
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqrshrun v0.4h, v1.4h, #3
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqrshrun v0.2s, v1.2s, #3
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:         sqrshrun2 v0.16b, v1.8h, #17
// CHECK-ERROR:                                  ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:         sqrshrun2 v0.8h, v1.4s, #33
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         sqrshrun2 v0.4s, v1.2d, #65
// CHECK-ERROR:                                 ^

//------------------------------------------------------------------------------
// Vector saturating shift right narrow by immediate
//------------------------------------------------------------------------------
         sqshrn v0.8b, v1.8b, #3
         sqshrn v0.4h, v1.4h, #3
         sqshrn v0.2s, v1.2s, #3
         sqshrn2 v0.16b, v1.8h, #17
         sqshrn2 v0.8h, v1.4s, #33
         sqshrn2 v0.4s, v1.2d, #65

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqshrn v0.8b, v1.8b, #3
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqshrn v0.4h, v1.4h, #3
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqshrn v0.2s, v1.2s, #3
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:         sqshrn2 v0.16b, v1.8h, #17
// CHECK-ERROR:                                ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:         sqshrn2 v0.8h, v1.4s, #33
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         sqshrn2 v0.4s, v1.2d, #65
// CHECK-ERROR:                               ^

//------------------------------------------------------------------------------
// Vector saturating shift right narrow by immediate
//------------------------------------------------------------------------------
         uqshrn v0.8b, v1.8b, #3
         uqshrn v0.4h, v1.4h, #3
         uqshrn v0.2s, v1.2s, #3
         uqshrn2 v0.16b, v1.8h, #17
         uqshrn2 v0.8h, v1.4s, #33
         uqshrn2 v0.4s, v1.2d, #65

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uqshrn v0.8b, v1.8b, #3
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uqshrn v0.4h, v1.4h, #3
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uqshrn v0.2s, v1.2s, #3
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:         uqshrn2 v0.16b, v1.8h, #17
// CHECK-ERROR:                                ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:         uqshrn2 v0.8h, v1.4s, #33
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         uqshrn2 v0.4s, v1.2d, #65
// CHECK-ERROR:                               ^

//------------------------------------------------------------------------------
// Vector saturating shift right rounded narrow by immediate
//------------------------------------------------------------------------------
         sqrshrn v0.8b, v1.8b, #3
         sqrshrn v0.4h, v1.4h, #3
         sqrshrn v0.2s, v1.2s, #3
         sqrshrn2 v0.16b, v1.8h, #17
         sqrshrn2 v0.8h, v1.4s, #33
         sqrshrn2 v0.4s, v1.2d, #65

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqrshrn v0.8b, v1.8b, #3
// CHECK-ERROR:                           ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqrshrn v0.4h, v1.4h, #3
// CHECK-ERROR:                           ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqrshrn v0.2s, v1.2s, #3
// CHECK-ERROR:                           ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:         sqrshrn2 v0.16b, v1.8h, #17
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:         sqrshrn2 v0.8h, v1.4s, #33
// CHECK-ERROR:                                ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         sqrshrn2 v0.4s, v1.2d, #65
// CHECK-ERROR:                                ^

//------------------------------------------------------------------------------
// Vector saturating shift right rounded narrow by immediate
//------------------------------------------------------------------------------
         uqrshrn v0.8b, v1.8b, #3
         uqrshrn v0.4h, v1.4h, #3
         uqrshrn v0.2s, v1.2s, #3
         uqrshrn2 v0.16b, v1.8h, #17
         uqrshrn2 v0.8h, v1.4s, #33
         uqrshrn2 v0.4s, v1.2d, #65

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uqrshrn v0.8b, v1.8b, #3
// CHECK-ERROR:                           ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uqrshrn v0.4h, v1.4h, #3
// CHECK-ERROR:                           ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uqrshrn v0.2s, v1.2s, #3
// CHECK-ERROR:                           ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:         uqrshrn2 v0.16b, v1.8h, #17
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:         uqrshrn2 v0.8h, v1.4s, #33
// CHECK-ERROR:                                ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         uqrshrn2 v0.4s, v1.2d, #65
// CHECK-ERROR:                                ^

//------------------------------------------------------------------------------
// Fixed-point convert to floating-point
//------------------------------------------------------------------------------
         scvtf v0.2s, v1.2d, #3
         scvtf v0.4s, v1.4h, #3
         scvtf v0.2d, v1.2s, #3
         ucvtf v0.2s, v1.2s, #33
         ucvtf v0.4s, v1.4s, #33
         ucvtf v0.2d, v1.2d, #65

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         scvtf v0.2s, v1.2d, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         scvtf v0.4s, v1.4h, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         scvtf v0.2d, v1.2s, #3
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         ucvtf v0.2s, v1.2s, #33
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         ucvtf v0.4s, v1.4s, #33
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:         ucvtf v0.2d, v1.2d, #65
// CHECK-ERROR:                             ^

//------------------------------------------------------------------------------
// Floating-point convert to fixed-point
//------------------------------------------------------------------------------
         fcvtzs v0.2s, v1.2d, #3
         fcvtzs v0.4s, v1.4h, #3
         fcvtzs v0.2d, v1.2s, #3
         fcvtzu v0.2s, v1.2s, #33
         fcvtzu v0.4s, v1.4s, #33
         fcvtzu v0.2d, v1.2d, #65

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtzs v0.2s, v1.2d, #3
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtzs v0.4s, v1.4h, #3
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtzs v0.2d, v1.2s, #3
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         fcvtzu v0.2s, v1.2s, #33
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:         fcvtzu v0.4s, v1.4s, #33
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:         fcvtzu v0.2d, v1.2d, #65
// CHECK-ERROR:                              ^

//----------------------------------------------------------------------
// Vector operation on 3 operands with different types
//----------------------------------------------------------------------

        // Mismatched and invalid vector types
        saddl v0.8h, v1.8h, v2.8b
        saddl v0.4s, v1.4s, v2.4h
        saddl v0.2d, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        saddl v0.8h, v1.8h, v2.8b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        saddl v0.4s, v1.4s, v2.4h
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        saddl v0.2d, v1.2d, v2.2s
// CHECK-ERROR:                        ^

        saddl2 v0.4s, v1.8s, v2.8h
        saddl2 v0.8h, v1.16h, v2.16b
        saddl2 v0.2d, v1.4d, v2.4s

// CHECK-ERROR: error: invalid vector kind qualifier
// CHECK-ERROR:        saddl2 v0.4s, v1.8s, v2.8h
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid vector kind qualifier
// CHECK-ERROR:        saddl2 v0.8h, v1.16h, v2.16b
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid vector kind qualifier
// CHECK-ERROR:        saddl2 v0.2d, v1.4d, v2.4s
// CHECK-ERROR:                      ^

        uaddl v0.8h, v1.8h, v2.8b
        uaddl v0.4s, v1.4s, v2.4h
        uaddl v0.2d, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uaddl v0.8h, v1.8h, v2.8b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uaddl v0.4s, v1.4s, v2.4h
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uaddl v0.2d, v1.2d, v2.2s
// CHECK-ERROR:                        ^

        uaddl2 v0.8h, v1.16h, v2.16b
        uaddl2 v0.4s, v1.8s, v2.8h
        uaddl2 v0.2d, v1.4d, v2.4s

// CHECK-ERROR: [[@LINE-4]]:23: error: invalid vector kind qualifier
// CHECK-ERROR-NEXT:        uaddl2 v0.8h, v1.16h, v2.16b
// CHECK-ERROR: [[@LINE-5]]:23: error: invalid vector kind qualifier
// CHECK-ERROR-NEXT:        uaddl2 v0.4s, v1.8s, v2.8h
// CHECK-ERROR: [[@LINE-6]]:23: error: invalid vector kind qualifier
// CHECK-ERROR-NEXT:        uaddl2 v0.2d, v1.4d, v2.4s

        ssubl v0.8h, v1.8h, v2.8b
        ssubl v0.4s, v1.4s, v2.4h
        ssubl v0.2d, v1.2d, v2.2s

// CHECK-ERROR: [[@LINE-4]]:22: error: invalid operand for instruction
// CHECK-ERROR-NEXT:        ssubl v0.8h, v1.8h, v2.8b
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        ssubl v0.4s, v1.4s, v2.4h
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        ssubl v0.2d, v1.2d, v2.2s
// CHECK-ERROR:                        ^

        ssubl2 v0.8h, v1.16h, v2.16b
        ssubl2 v0.4s, v1.8s, v2.8h
        ssubl2 v0.2d, v1.4d, v2.4s

// CHECK-ERROR: [[@LINE-4]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        ssubl2 v0.8h, v1.16h, v2.16b
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid vector kind qualifier
// CHECK-ERROR:        ssubl2 v0.4s, v1.8s, v2.8h
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid vector kind qualifier
// CHECK-ERROR:        ssubl2 v0.2d, v1.4d, v2.4s
// CHECK-ERROR:                      ^

        usubl v0.8h, v1.8h, v2.8b
        usubl v0.4s, v1.4s, v2.4h
        usubl v0.2d, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        usubl v0.8h, v1.8h, v2.8b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        usubl v0.4s, v1.4s, v2.4h
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        usubl v0.2d, v1.2d, v2.2s
// CHECK-ERROR:                        ^

        usubl2 v0.8h, v1.16h, v2.16b
        usubl2 v0.4s, v1.8s, v2.8h
        usubl2 v0.2d, v1.4d, v2.4s

// CHECK-ERROR: [[@LINE-4]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        usubl2 v0.8h, v1.16h, v2.16b
// CHECK-ERROR: [[@LINE-5]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        usubl2 v0.4s, v1.8s, v2.8h
// CHECK-ERROR: [[@LINE-6]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        usubl2 v0.2d, v1.4d, v2.4s

        sabal v0.8h, v1.8h, v2.8b
        sabal v0.4s, v1.4s, v2.4h
        sabal v0.2d, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sabal v0.8h, v1.8h, v2.8b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sabal v0.4s, v1.4s, v2.4h
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sabal v0.2d, v1.2d, v2.2s
// CHECK-ERROR:                        ^

        sabal2 v0.8h, v1.16h, v2.16b
        sabal2 v0.4s, v1.8s, v2.8h
        sabal2 v0.2d, v1.4d, v2.4s

// CHECK-ERROR: error: invalid vector kind qualifier
// CHECK-ERROR:        sabal2 v0.8h, v1.16h, v2.16b
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid vector kind qualifier
// CHECK-ERROR:        sabal2 v0.4s, v1.8s, v2.8h
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid vector kind qualifier
// CHECK-ERROR:        sabal2 v0.2d, v1.4d, v2.4s
// CHECK-ERROR:                      ^

        uabal v0.8h, v1.8h, v2.8b
        uabal v0.4s, v1.4s, v2.4h
        uabal v0.2d, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uabal v0.8h, v1.8h, v2.8b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uabal v0.4s, v1.4s, v2.4h
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uabal v0.2d, v1.2d, v2.2s
// CHECK-ERROR:                        ^

        uabal2 v0.8h, v1.16h, v2.16b
        uabal2 v0.4s, v1.8s, v2.8h
        uabal2 v0.2d, v1.4d, v2.4s

// CHECK-ERROR: [[@LINE-4]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        uabal2 v0.8h, v1.16h, v2.16b
// CHECK-ERROR: [[@LINE-5]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        uabal2 v0.4s, v1.8s, v2.8h
// CHECK-ERROR: [[@LINE-6]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        uabal2 v0.2d, v1.4d, v2.4s

        sabdl v0.8h, v1.8h, v2.8b
        sabdl v0.4s, v1.4s, v2.4h
        sabdl v0.2d, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sabdl v0.8h, v1.8h, v2.8b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sabdl v0.4s, v1.4s, v2.4h
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sabdl v0.2d, v1.2d, v2.2s
// CHECK-ERROR:                        ^

        sabdl2 v0.8h, v1.16h, v2.16b
        sabdl2 v0.4s, v1.8s, v2.8h
        sabdl2 v0.2d, v1.4d, v2.4s

// CHECK-ERROR: [[@LINE-4]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        sabdl2 v0.8h, v1.16h, v2.16b
// CHECK-ERROR: [[@LINE-5]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        sabdl2 v0.4s, v1.8s, v2.8h
// CHECK-ERROR: [[@LINE-6]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        sabdl2 v0.2d, v1.4d, v2.4s

        uabdl v0.8h, v1.8h, v2.8b
        uabdl v0.4s, v1.4s, v2.4h
        uabdl v0.2d, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uabdl v0.8h, v1.8h, v2.8b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uabdl v0.4s, v1.4s, v2.4h
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uabdl v0.2d, v1.2d, v2.2s
// CHECK-ERROR:                        ^

        uabdl2 v0.8h, v1.16h, v2.16b
        uabdl2 v0.4s, v1.8s, v2.8h
        uabdl2 v0.2d, v1.4d, v2.4s

// CHECK-ERROR: [[@LINE-4]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        uabdl2 v0.8h, v1.16h, v2.16b
// CHECK-ERROR: [[@LINE-5]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        uabdl2 v0.4s, v1.8s, v2.8h
// CHECK-ERROR: [[@LINE-6]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        uabdl2 v0.2d, v1.4d, v2.4s

        smlal v0.8h, v1.8h, v2.8b
        smlal v0.4s, v1.4s, v2.4h
        smlal v0.2d, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smlal v0.8h, v1.8h, v2.8b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smlal v0.4s, v1.4s, v2.4h
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smlal v0.2d, v1.2d, v2.2s
// CHECK-ERROR:                        ^

        smlal2 v0.8h, v1.16h, v2.16b
        smlal2 v0.4s, v1.8s, v2.8h
        smlal2 v0.2d, v1.4d, v2.4s

// CHECK-ERROR: [[@LINE-4]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        smlal2 v0.8h, v1.16h, v2.16b
// CHECK-ERROR: [[@LINE-5]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        smlal2 v0.4s, v1.8s, v2.8h
// CHECK-ERROR: [[@LINE-6]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        smlal2 v0.2d, v1.4d, v2.4s

        umlal v0.8h, v1.8h, v2.8b
        umlal v0.4s, v1.4s, v2.4h
        umlal v0.2d, v1.2d, v2.2s

// CHECK-ERROR: [[@LINE-4]]:22: error: invalid operand for instruction
// CHECK-ERROR:        umlal v0.8h, v1.8h, v2.8b
// CHECK-ERROR: [[@LINE-5]]:22: error: invalid operand for instruction
// CHECK-ERROR:        umlal v0.4s, v1.4s, v2.4h
// CHECK-ERROR: [[@LINE-6]]:22: error: invalid operand for instruction
// CHECK-ERROR:        umlal v0.2d, v1.2d, v2.2s

        umlal2 v0.8h, v1.16h, v2.16b
        umlal2 v0.4s, v1.8s, v2.8h
        umlal2 v0.2d, v1.4d, v2.4s

// CHECK-ERROR: [[@LINE-4]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        umlal2 v0.8h, v1.16h, v2.16b
// CHECK-ERROR: [[@LINE-5]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        umlal2 v0.4s, v1.8s, v2.8h
// CHECK-ERROR: [[@LINE-6]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        umlal2 v0.2d, v1.4d, v2.4s

        smlsl v0.8h, v1.8h, v2.8b
        smlsl v0.4s, v1.4s, v2.4h
        smlsl v0.2d, v1.2d, v2.2s

// CHECK-ERROR: [[@LINE-4]]:22: error: invalid operand for instruction
// CHECK-ERROR:        smlsl v0.8h, v1.8h, v2.8b
// CHECK-ERROR: [[@LINE-5]]:22: error: invalid operand for instruction
// CHECK-ERROR:        smlsl v0.4s, v1.4s, v2.4h
// CHECK-ERROR: [[@LINE-6]]:22: error: invalid operand for instruction
// CHECK-ERROR:        smlsl v0.2d, v1.2d, v2.2s

        smlsl2 v0.8h, v1.16h, v2.16b
        smlsl2 v0.4s, v1.8s, v2.8h
        smlsl2 v0.2d, v1.4d, v2.4s

// CHECK-ERROR: [[@LINE-4]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        smlsl2 v0.8h, v1.16h, v2.16b
// CHECK-ERROR: [[@LINE-5]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        smlsl2 v0.4s, v1.8s, v2.8h
// CHECK-ERROR: [[@LINE-6]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        smlsl2 v0.2d, v1.4d, v2.4s

        umlsl v0.8h, v1.8h, v2.8b
        umlsl v0.4s, v1.4s, v2.4h
        umlsl v0.2d, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umlsl v0.8h, v1.8h, v2.8b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umlsl v0.4s, v1.4s, v2.4h
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umlsl v0.2d, v1.2d, v2.2s
// CHECK-ERROR:                        ^

        umlsl2 v0.8h, v1.16h, v2.16b
        umlsl2 v0.4s, v1.8s, v2.8h
        umlsl2 v0.2d, v1.4d, v2.4s

// CHECK-ERROR: [[@LINE-4]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        umlsl2 v0.8h, v1.16h, v2.16b
// CHECK-ERROR: [[@LINE-5]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        umlsl2 v0.4s, v1.8s, v2.8h
// CHECK-ERROR: [[@LINE-6]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        umlsl2 v0.2d, v1.4d, v2.4s

        smull v0.8h, v1.8h, v2.8b
        smull v0.4s, v1.4s, v2.4h
        smull v0.2d, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smull v0.8h, v1.8h, v2.8b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smull v0.4s, v1.4s, v2.4h
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smull v0.2d, v1.2d, v2.2s
// CHECK-ERROR:                        ^

        smull2 v0.8h, v1.16h, v2.16b
        smull2 v0.4s, v1.8s, v2.8h
        smull2 v0.2d, v1.4d, v2.4s

// CHECK-ERROR: [[@LINE-4]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        smull2 v0.8h, v1.16h, v2.16b
// CHECK-ERROR: [[@LINE-5]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        smull2 v0.4s, v1.8s, v2.8h
// CHECK-ERROR: [[@LINE-6]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        smull2 v0.2d, v1.4d, v2.4s

        umull v0.8h, v1.8h, v2.8b
        umull v0.4s, v1.4s, v2.4h
        umull v0.2d, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umull v0.8h, v1.8h, v2.8b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umull v0.4s, v1.4s, v2.4h
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umull v0.2d, v1.2d, v2.2s
// CHECK-ERROR:                        ^

        umull2 v0.8h, v1.16h, v2.16b
        umull2 v0.4s, v1.8s, v2.8h
        umull2 v0.2d, v1.4d, v2.4s

// CHECK-ERROR: [[@LINE-4]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        umull2 v0.8h, v1.16h, v2.16b
// CHECK-ERROR: [[@LINE-5]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        umull2 v0.4s, v1.8s, v2.8h
// CHECK-ERROR: [[@LINE-6]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        umull2 v0.2d, v1.4d, v2.4s

//------------------------------------------------------------------------------
// Long - Variant 2
//------------------------------------------------------------------------------

        sqdmlal v0.4s, v1.4s, v2.4h
        sqdmlal v0.2d, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlal v0.4s, v1.4s, v2.4h
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlal v0.2d, v1.2d, v2.2s
// CHECK-ERROR:                          ^

        sqdmlal2 v0.4s, v1.8s, v2.8h
        sqdmlal2 v0.2d, v1.4d, v2.4s

// CHECK-ERROR: [[@LINE-3]]:25: error: invalid vector kind qualifier
// CHECK-ERROR:        sqdmlal2 v0.4s, v1.8s, v2.8h
// CHECK-ERROR: [[@LINE-4]]:25: error: invalid vector kind qualifier
// CHECK-ERROR:        sqdmlal2 v0.2d, v1.4d, v2.4s

        // Mismatched vector types
        sqdmlal v0.8h, v1.8b, v2.8b
        sqdmlal2 v0.8h, v1.16b, v2.16b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlal v0.8h, v1.8b, v2.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlal2 v0.8h, v1.16b, v2.16b
// CHECK-ERROR:                    ^

        sqdmlsl v0.4s, v1.4s, v2.4h
        sqdmlsl v0.2d, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlsl v0.4s, v1.4s, v2.4h
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlsl v0.2d, v1.2d, v2.2s
// CHECK-ERROR:                          ^

        sqdmlsl2 v0.4s, v1.8s, v2.8h
        sqdmlsl2 v0.2d, v1.4d, v2.4s

// CHECK-ERROR: [[@LINE-3]]:25: error: invalid vector kind qualifier
// CHECK-ERROR:        sqdmlsl2 v0.4s, v1.8s, v2.8h
// CHECK-ERROR: [[@LINE-4]]:25: error: invalid vector kind qualifier
// CHECK-ERROR:        sqdmlsl2 v0.2d, v1.4d, v2.4s

        // Mismatched vector types
        sqdmlsl v0.8h, v1.8b, v2.8b
        sqdmlsl2 v0.8h, v1.16b, v2.16b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlsl v0.8h, v1.8b, v2.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlsl2 v0.8h, v1.16b, v2.16b
// CHECK-ERROR:                    ^


        sqdmull v0.4s, v1.4s, v2.4h
        sqdmull v0.2d, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmull v0.4s, v1.4s, v2.4h
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmull v0.2d, v1.2d, v2.2s
// CHECK-ERROR:                          ^

        sqdmull2 v0.4s, v1.8s, v2.8h
        sqdmull2 v0.2d, v1.4d, v2.4s

// CHECK-ERROR: [[@LINE-3]]:25: error: invalid vector kind qualifier
// CHECK-ERROR:        sqdmull2 v0.4s, v1.8s, v2.8h
// CHECK-ERROR: [[@LINE-4]]:25: error: invalid vector kind qualifier
// CHECK-ERROR:        sqdmull2 v0.2d, v1.4d, v2.4s

        // Mismatched vector types
        sqdmull v0.8h, v1.8b, v2.8b
        sqdmull2 v0.8h, v1.16b, v2.16b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmull v0.8h, v1.8b, v2.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmull2 v0.8h, v1.16b, v2.16b
// CHECK-ERROR:                    ^


//------------------------------------------------------------------------------
// Long - Variant 3
//------------------------------------------------------------------------------

        pmull v0.8h, v1.8h, v2.8b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        pmull v0.8h, v1.8h, v2.8b
// CHECK-ERROR:                        ^

        pmull v0.1q, v1.2d, v2.2d
        
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        pmull v0.1q, v1.2d, v2.2d
// CHECK-ERROR:                     ^

        // Mismatched vector types
        pmull v0.4s, v1.4h, v2.4h
        pmull v0.2d, v1.2s, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        pmull v0.4s, v1.4h, v2.4h
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        pmull v0.2d, v1.2s, v2.2s
// CHECK-ERROR:                 ^


        pmull2 v0.8h, v1.16h, v2.16b
// CHECK-ERROR: [[@LINE-1]]:23: error: invalid vector kind qualifier
// CHECK-ERROR:        pmull2 v0.8h, v1.16h, v2.16b

        pmull2 v0.q, v1.2d, v2.2d
// CHECK-ERROR: [[@LINE-1]]:16: error: invalid vector kind qualifier
// CHECK-ERROR:        pmull2 v0.q, v1.2d, v2.2d

        // Mismatched vector types
        pmull2 v0.4s, v1.8h v2.8h
        pmull2 v0.2d, v1.4s, v2.4s


// CHECK-ERROR: error: unexpected token in argument list
// CHECK-ERROR:        pmull2 v0.4s, v1.8h v2.8h
// CHECK-ERROR:                            ^

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        pmull2 v0.2d, v1.4s, v2.4s
// CHECK-ERROR:                  ^

//------------------------------------------------------------------------------
// Widen
//------------------------------------------------------------------------------

        saddw v0.8h, v1.8h, v2.8h
        saddw v0.4s, v1.4s, v2.4s
        saddw v0.2d, v1.2d, v2.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        saddw v0.8h, v1.8h, v2.8h
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        saddw v0.4s, v1.4s, v2.4s
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        saddw v0.2d, v1.2d, v2.2d
// CHECK-ERROR:                               ^

        saddw2 v0.8h, v1.8h, v2.16h
        saddw2 v0.4s, v1.4s, v2.8s
        saddw2 v0.2d, v1.2d, v2.4d

// CHECK-ERROR: [[@LINE-4]]:30: error: invalid vector kind qualifier
// CHECK-ERROR:        saddw2 v0.8h, v1.8h, v2.16h
// CHECK-ERROR: [[@LINE-5]]:30: error: invalid vector kind qualifier
// CHECK-ERROR:        saddw2 v0.4s, v1.4s, v2.8s
// CHECK-ERROR: [[@LINE-6]]:30: error: invalid vector kind qualifier
// CHECK-ERROR:        saddw2 v0.2d, v1.2d, v2.4d

        uaddw v0.8h, v1.8h, v2.8h
        uaddw v0.4s, v1.4s, v2.4s
        uaddw v0.2d, v1.2d, v2.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uaddw v0.8h, v1.8h, v2.8h
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uaddw v0.4s, v1.4s, v2.4s
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uaddw v0.2d, v1.2d, v2.2d
// CHECK-ERROR:                               ^

        uaddw2 v0.8h, v1.8h, v2.16h
        uaddw2 v0.4s, v1.4s, v2.8s
        uaddw2 v0.2d, v1.2d, v2.4d

// CHECK-ERROR: [[@LINE-4]]:30: error: invalid vector kind qualifier
// CHECK-ERROR:        uaddw2 v0.8h, v1.8h, v2.16h
// CHECK-ERROR: [[@LINE-5]]:30: error: invalid vector kind qualifier
// CHECK-ERROR:        uaddw2 v0.4s, v1.4s, v2.8s
// CHECK-ERROR: [[@LINE-6]]:30: error: invalid vector kind qualifier
// CHECK-ERROR:        uaddw2 v0.2d, v1.2d, v2.4d

        ssubw v0.8h, v1.8h, v2.8h
        ssubw v0.4s, v1.4s, v2.4s
        ssubw v0.2d, v1.2d, v2.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        ssubw v0.8h, v1.8h, v2.8h
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        ssubw v0.4s, v1.4s, v2.4s
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        ssubw v0.2d, v1.2d, v2.2d
// CHECK-ERROR:                               ^

        ssubw2 v0.8h, v1.8h, v2.16h
        ssubw2 v0.4s, v1.4s, v2.8s
        ssubw2 v0.2d, v1.2d, v2.4d

// CHECK-ERROR: [[@LINE-4]]:30: error: invalid vector kind qualifier
// CHECK-ERROR:        ssubw2 v0.8h, v1.8h, v2.16h
// CHECK-ERROR: [[@LINE-5]]:30: error: invalid vector kind qualifier
// CHECK-ERROR:        ssubw2 v0.4s, v1.4s, v2.8s
// CHECK-ERROR: [[@LINE-6]]:30: error: invalid vector kind qualifier
// CHECK-ERROR:        ssubw2 v0.2d, v1.2d, v2.4d

        usubw v0.8h, v1.8h, v2.8h
        usubw v0.4s, v1.4s, v2.4s
        usubw v0.2d, v1.2d, v2.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        usubw v0.8h, v1.8h, v2.8h
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        usubw v0.4s, v1.4s, v2.4s
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        usubw v0.2d, v1.2d, v2.2d
// CHECK-ERROR:                               ^

        usubw2 v0.8h, v1.8h, v2.16h
        usubw2 v0.4s, v1.4s, v2.8s
        usubw2 v0.2d, v1.2d, v2.4d

// CHECK-ERROR: [[@LINE-4]]:30: error: invalid vector kind qualifier
// CHECK-ERROR:        usubw2 v0.8h, v1.8h, v2.16h
// CHECK-ERROR: [[@LINE-5]]:30: error: invalid vector kind qualifier
// CHECK-ERROR:        usubw2 v0.4s, v1.4s, v2.8s
// CHECK-ERROR: [[@LINE-6]]:30: error: invalid vector kind qualifier
// CHECK-ERROR:        usubw2 v0.2d, v1.2d, v2.4d

//------------------------------------------------------------------------------
// Narrow
//------------------------------------------------------------------------------

        addhn v0.8b, v1.8h, v2.8d
        addhn v0.4h, v1.4s, v2.4h
        addhn v0.2s, v1.2d, v2.2s

// CHECK-ERROR: [[@LINE-4]]:29: error: invalid vector kind qualifier
// CHECK-ERROR:        addhn v0.8b, v1.8h, v2.8d
// CHECK-ERROR: [[@LINE-5]]:29: error: invalid operand for instruction
// CHECK-ERROR:        addhn v0.4h, v1.4s, v2.4h
// CHECK-ERROR: [[@LINE-6]]:29: error: invalid operand for instruction
// CHECK-ERROR:        addhn v0.2s, v1.2d, v2.2s

        addhn2 v0.16b, v1.8h, v2.8b
        addhn2 v0.8h, v1.4s, v2.4h
        addhn2 v0.4s, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        addhn2 v0.16b, v1.8h, v2.8b
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        addhn2 v0.8h, v1.4s, v2.4h
// CHECK-ERROR:                                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        addhn2 v0.4s, v1.2d, v2.2s
// CHECK-ERROR:                                ^

        raddhn v0.8b, v1.8h, v2.8b
        raddhn v0.4h, v1.4s, v2.4h
        raddhn v0.2s, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        raddhn v0.8b, v1.8h, v2.8b
// CHECK-ERROR:                                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        raddhn v0.4h, v1.4s, v2.4h
// CHECK-ERROR:                                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        raddhn v0.2s, v1.2d, v2.2s
// CHECK-ERROR:                                ^

        raddhn2 v0.16b, v1.8h, v2.8b
        raddhn2 v0.8h, v1.4s, v2.4h
        raddhn2 v0.4s, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        raddhn2 v0.16b, v1.8h, v2.8b
// CHECK-ERROR:                                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        raddhn2 v0.8h, v1.4s, v2.4h
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        raddhn2 v0.4s, v1.2d, v2.2s
// CHECK-ERROR:                                 ^

        rsubhn v0.8b, v1.8h, v2.8b
        rsubhn v0.4h, v1.4s, v2.4h
        rsubhn v0.2s, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        rsubhn v0.8b, v1.8h, v2.8b
// CHECK-ERROR:                                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        rsubhn v0.4h, v1.4s, v2.4h
// CHECK-ERROR:                                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        rsubhn v0.2s, v1.2d, v2.2s
// CHECK-ERROR:                                ^

        rsubhn2 v0.16b, v1.8h, v2.8b
        rsubhn2 v0.8h, v1.4s, v2.4h
        rsubhn2 v0.4s, v1.2d, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        rsubhn2 v0.16b, v1.8h, v2.8b
// CHECK-ERROR:                                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        rsubhn2 v0.8h, v1.4s, v2.4h
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        rsubhn2 v0.4s, v1.2d, v2.2s
// CHECK-ERROR:                                 ^

//----------------------------------------------------------------------
// Scalar Reduce Add Pairwise (Integer)
//----------------------------------------------------------------------
         // invalid vector types
      addp s0, d1.2d
      addp d0, d1.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          addp s0, d1.2d
// CHECK-ERROR:               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          addp d0, d1.2s
// CHECK-ERROR:                      ^

//----------------------------------------------------------------------
// Scalar Reduce Add Pairwise (Floating Point)
//----------------------------------------------------------------------
         // invalid vector types
      faddp s0, d1.2d
      faddp d0, d1.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          faddp s0, d1.2d
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          faddp d0, d1.2s
// CHECK-ERROR:                    ^

//----------------------------------------------------------------------
// Scalar Reduce Maximum Pairwise (Floating Point)
//----------------------------------------------------------------------
         // mismatched and invalid vector types
      fmaxp s0, v1.2d
      fmaxp d31, v2.2s
      fmaxp h3, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fmaxp s0, v1.2d
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fmaxp d31, v2.2s
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fmaxp h3, v2.2s
// CHECK-ERROR:                ^


//----------------------------------------------------------------------
// Scalar Reduce Minimum Pairwise (Floating Point)
//----------------------------------------------------------------------
         // mismatched and invalid vector types
      fminp s0, v1.4h
      fminp d31, v2.8h
      fminp b3, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fminp s0, v1.4h
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fminp d31, v2.8h
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fminp b3, v2.2s
// CHECK-ERROR:                ^


//----------------------------------------------------------------------
// Scalar Reduce maxNum Pairwise (Floating Point)
//----------------------------------------------------------------------
         // mismatched and invalid vector types
      fmaxnmp s0, v1.8b
      fmaxnmp d31, v2.16b
      fmaxnmp v1.2s, v2.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fmaxnmp s0, v1.8b
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fmaxnmp d31, v2.16b
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: too few operands for instruction
// CHECK-ERROR:          fmaxnmp v1.2s, v2.2s
// CHECK-ERROR:          ^

//----------------------------------------------------------------------
// Scalar Reduce minNum Pairwise (Floating Point)
//----------------------------------------------------------------------
         // mismatched and invalid vector types
      fminnmp s0, v1.2d
      fminnmp d31, v2.4s
      fminnmp v1.4s, v2.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fminnmp s0, v1.2d
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fminnmp d31, v2.4s
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fminnmp v1.4s, v2.2d
// CHECK-ERROR:          ^

      mla v0.2d, v1.2d, v16.d[1]
      mla v0.2s, v1.2s, v2.s[4]
      mla v0.4s, v1.4s, v2.s[4]
      mla v0.2h, v1.2h, v2.h[1]
      mla v0.4h, v1.4h, v2.h[8]
      mla v0.8h, v1.8h, v2.h[8]
      mla v0.4h, v1.4h, v16.h[2]
      mla v0.8h, v1.8h, v16.h[2]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        mla v0.2d, v1.2d, v16.d[1]
// CHECK-ERROR:               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        mla v0.2s, v1.2s, v2.s[4]
// CHECK-ERROR:                               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        mla v0.4s, v1.4s, v2.s[4]
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        mla v0.2h, v1.2h, v2.h[1]
// CHECK-ERROR:            ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        mla v0.4h, v1.4h, v2.h[8]
// CHECK-ERROR:                               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        mla v0.8h, v1.8h, v2.h[8]
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        mla v0.4h, v1.4h, v16.h[2]
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        mla v0.8h, v1.8h, v16.h[2]
// CHECK-ERROR:                              ^

      mls v0.2d, v1.2d, v16.d[1]
      mls v0.2s, v1.2s, v2.s[4]
      mls v0.4s, v1.4s, v2.s[4]
      mls v0.2h, v1.2h, v2.h[1]
      mls v0.4h, v1.4h, v2.h[8]
      mls v0.8h, v1.8h, v2.h[8]
      mls v0.4h, v1.4h, v16.h[2]
      mls v0.8h, v1.8h, v16.h[2]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        mls v0.2d, v1.2d, v16.d[1]
// CHECK-ERROR:               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        mls v0.2s, v1.2s, v2.s[4]
// CHECK-ERROR:                               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        mls v0.4s, v1.4s, v2.s[4]
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        mls v0.2h, v1.2h, v2.h[1]
// CHECK-ERROR:            ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        mls v0.4h, v1.4h, v2.h[8]
// CHECK-ERROR:                               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        mls v0.8h, v1.8h, v2.h[8]
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        mls v0.4h, v1.4h, v16.h[2]
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        mls v0.8h, v1.8h, v16.h[2]
// CHECK-ERROR:                              ^

      fmla v0.4h, v1.4h, v2.h[2]
      fmla v0.8h, v1.8h, v2.h[2]
      fmla v0.2s, v1.2s, v2.s[4]
      fmla v0.2s, v1.2s, v22.s[4]
      fmla v3.4s, v8.4s, v2.s[4]
      fmla v3.4s, v8.4s, v22.s[4]
      fmla v0.2d, v1.2d, v2.d[2]
      fmla v0.2d, v1.2d, v22.d[2]

// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:        fmla v0.4h, v1.4h, v2.h[2]
// CHECK-ERROR:                ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:        fmla v0.8h, v1.8h, v2.h[2]
// CHECK-ERROR:                ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmla v0.2s, v1.2s, v2.s[4]
// CHECK-ERROR:                                ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmla v0.2s, v1.2s, v22.s[4]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmla v3.4s, v8.4s, v2.s[4]
// CHECK-ERROR:                                ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmla v3.4s, v8.4s, v22.s[4]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmla v0.2d, v1.2d, v2.d[2]
// CHECK-ERROR:                                ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmla v0.2d, v1.2d, v22.d[2]
// CHECK-ERROR:                                 ^

      fmls v0.4h, v1.4h, v2.h[2]
      fmls v0.8h, v1.8h, v2.h[2]
      fmls v0.2s, v1.2s, v2.s[4]
      fmls v0.2s, v1.2s, v22.s[4]
      fmls v3.4s, v8.4s, v2.s[4]
      fmls v3.4s, v8.4s, v22.s[4]
      fmls v0.2d, v1.2d, v2.d[2]
      fmls v0.2d, v1.2d, v22.d[2]

// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:        fmls v0.4h, v1.4h, v2.h[2]
// CHECK-ERROR:                ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:        fmls v0.8h, v1.8h, v2.h[2]
// CHECK-ERROR:                ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmls v0.2s, v1.2s, v2.s[4]
// CHECK-ERROR:                                ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmls v0.2s, v1.2s, v22.s[4]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmls v3.4s, v8.4s, v2.s[4]
// CHECK-ERROR:                                ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmls v3.4s, v8.4s, v22.s[4]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmls v0.2d, v1.2d, v2.d[2]
// CHECK-ERROR:                                ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmls v0.2d, v1.2d, v22.d[2]
// CHECK-ERROR:                                 ^

      smlal v0.4h, v1.4h, v2.h[2]
      smlal v0.4s, v1.4h, v2.h[8]
      smlal v0.4s, v1.4h, v16.h[2]
      smlal v0.2s, v1.2s, v2.s[1]
      smlal v0.2d, v1.2s, v2.s[4]
      smlal v0.2d, v1.2s, v22.s[4]
      smlal2 v0.4h, v1.8h, v1.h[2]
      smlal2 v0.4s, v1.8h, v1.h[8]
      smlal2 v0.4s, v1.8h, v16.h[2]
      smlal2 v0.2s, v1.4s, v1.s[2]
      smlal2 v0.2d, v1.4s, v1.s[4]
      smlal2 v0.2d, v1.4s, v22.s[4]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smlal v0.4h, v1.4h, v2.h[2]
// CHECK-ERROR:              ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        smlal v0.4s, v1.4h, v2.h[8]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smlal v0.4s, v1.4h, v16.h[2]
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smlal v0.2s, v1.2s, v2.s[1]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        smlal v0.2d, v1.2s, v2.s[4]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        smlal v0.2d, v1.2s, v22.s[4]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smlal2 v0.4h, v1.8h, v1.h[2]
// CHECK-ERROR:               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        smlal2 v0.4s, v1.8h, v1.h[8]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smlal2 v0.4s, v1.8h, v16.h[2]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smlal2 v0.2s, v1.4s, v1.s[2]
// CHECK-ERROR:               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        smlal2 v0.2d, v1.4s, v1.s[4]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        smlal2 v0.2d, v1.4s, v22.s[4]
// CHECK-ERROR:                                   ^

      smlsl v0.4h, v1.4h, v2.h[2]
      smlsl v0.4s, v1.4h, v2.h[8]
      smlsl v0.4s, v1.4h, v16.h[2]
      smlsl v0.2s, v1.2s, v2.s[1]
      smlsl v0.2d, v1.2s, v2.s[4]
      smlsl v0.2d, v1.2s, v22.s[4]
      smlsl2 v0.4h, v1.8h, v1.h[2]
      smlsl2 v0.4s, v1.8h, v1.h[8]
      smlsl2 v0.4s, v1.8h, v16.h[2]
      smlsl2 v0.2s, v1.4s, v1.s[2]
      smlsl2 v0.2d, v1.4s, v1.s[4]
      smlsl2 v0.2d, v1.4s, v22.s[4]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smlsl v0.4h, v1.4h, v2.h[2]
// CHECK-ERROR:              ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        smlsl v0.4s, v1.4h, v2.h[8]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smlsl v0.4s, v1.4h, v16.h[2]
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smlsl v0.2s, v1.2s, v2.s[1]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        smlsl v0.2d, v1.2s, v2.s[4]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        smlsl v0.2d, v1.2s, v22.s[4]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smlsl2 v0.4h, v1.8h, v1.h[2]
// CHECK-ERROR:               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        smlsl2 v0.4s, v1.8h, v1.h[8]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smlsl2 v0.4s, v1.8h, v16.h[2]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smlsl2 v0.2s, v1.4s, v1.s[2]
// CHECK-ERROR:               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        smlsl2 v0.2d, v1.4s, v1.s[4]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        smlsl2 v0.2d, v1.4s, v22.s[4]
// CHECK-ERROR:                                   ^

      umlal v0.4h, v1.4h, v2.h[2]
      umlal v0.4s, v1.4h, v2.h[8]
      umlal v0.4s, v1.4h, v16.h[2]
      umlal v0.2s, v1.2s, v2.s[1]
      umlal v0.2d, v1.2s, v2.s[4]
      umlal v0.2d, v1.2s, v22.s[4]
      umlal2 v0.4h, v1.8h, v1.h[2]
      umlal2 v0.4s, v1.8h, v1.h[8]
      umlal2 v0.4s, v1.8h, v16.h[2]
      umlal2 v0.2s, v1.4s, v1.s[2]
      umlal2 v0.2d, v1.4s, v1.s[4]
      umlal2 v0.2d, v1.4s, v22.s[4]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umlal v0.4h, v1.4h, v2.h[2]
// CHECK-ERROR:              ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        umlal v0.4s, v1.4h, v2.h[8]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umlal v0.4s, v1.4h, v16.h[2]
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umlal v0.2s, v1.2s, v2.s[1]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        umlal v0.2d, v1.2s, v2.s[4]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        umlal v0.2d, v1.2s, v22.s[4]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umlal2 v0.4h, v1.8h, v1.h[2]
// CHECK-ERROR:               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        umlal2 v0.4s, v1.8h, v1.h[8]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umlal2 v0.4s, v1.8h, v16.h[2]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umlal2 v0.2s, v1.4s, v1.s[2]
// CHECK-ERROR:               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        umlal2 v0.2d, v1.4s, v1.s[4]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        umlal2 v0.2d, v1.4s, v22.s[4]
// CHECK-ERROR:                                   ^

      umlsl v0.4h, v1.4h, v2.h[2]
      umlsl v0.4s, v1.4h, v2.h[8]
      umlsl v0.4s, v1.4h, v16.h[2]
      umlsl v0.2s, v1.2s, v2.s[3]
      umlsl v0.2d, v1.2s, v2.s[4]
      umlsl v0.2d, v1.2s, v22.s[4]
      umlsl2 v0.4h, v1.8h, v1.h[2]
      umlsl2 v0.4s, v1.8h, v1.h[8]
      umlsl2 v0.4s, v1.8h, v16.h[2]
      umlsl2 v0.2s, v1.4s, v1.s[2]
      umlsl2 v0.2d, v1.4s, v1.s[4]
      umlsl2 v0.2d, v1.4s, v22.s[4]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umlsl v0.4h, v1.4h, v2.h[2]
// CHECK-ERROR:              ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        umlsl v0.4s, v1.4h, v2.h[8]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umlsl v0.4s, v1.4h, v16.h[2]
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umlsl v0.2s, v1.2s, v2.s[3]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        umlsl v0.2d, v1.2s, v2.s[4]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        umlsl v0.2d, v1.2s, v22.s[4]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umlsl2 v0.4h, v1.8h, v1.h[2]
// CHECK-ERROR:               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        umlsl2 v0.4s, v1.8h, v1.h[8]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umlsl2 v0.4s, v1.8h, v16.h[2]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umlsl2 v0.2s, v1.4s, v1.s[2]
// CHECK-ERROR:               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        umlsl2 v0.2d, v1.4s, v1.s[4]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        umlsl2 v0.2d, v1.4s, v22.s[4]
// CHECK-ERROR:                                   ^

      sqdmlal v0.4h, v1.4h, v2.h[2]
      sqdmlal v0.4s, v1.4h, v2.h[8]
      sqdmlal v0.4s, v1.4h, v16.h[2]
      sqdmlal v0.2s, v1.2s, v2.s[3]
      sqdmlal v0.2d, v1.2s, v2.s[4]
      sqdmlal v0.2d, v1.2s, v22.s[4]
      sqdmlal2 v0.4h, v1.8h, v1.h[2]
      sqdmlal2 v0.4s, v1.8h, v1.h[8]
      sqdmlal2 v0.4s, v1.8h, v16.h[2]
      sqdmlal2 v0.2s, v1.4s, v1.s[2]
      sqdmlal2 v0.2d, v1.4s, v1.s[4]
      sqdmlal2 v0.2d, v1.4s, v22.s[4]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlal v0.4h, v1.4h, v2.h[2]
// CHECK-ERROR:                ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmlal v0.4s, v1.4h, v2.h[8]
// CHECK-ERROR:                                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlal v0.4s, v1.4h, v16.h[2]
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlal v0.2s, v1.2s, v2.s[3]
// CHECK-ERROR:                                   ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmlal v0.2d, v1.2s, v2.s[4]
// CHECK-ERROR:                                   ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmlal v0.2d, v1.2s, v22.s[4]
// CHECK-ERROR:                                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlal2 v0.4h, v1.8h, v1.h[2]
// CHECK-ERROR:                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmlal2 v0.4s, v1.8h, v1.h[8]
// CHECK-ERROR:                                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlal2 v0.4s, v1.8h, v16.h[2]
// CHECK-ERROR:                                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlal2 v0.2s, v1.4s, v1.s[2]
// CHECK-ERROR:                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmlal2 v0.2d, v1.4s, v1.s[4]
// CHECK-ERROR:                                    ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmlal2 v0.2d, v1.4s, v22.s[4]
// CHECK-ERROR:                                     ^

      sqdmlsl v0.4h, v1.4h, v2.h[2]
      sqdmlsl v0.4s, v1.4h, v2.h[8]
      sqdmlsl v0.4s, v1.4h, v16.h[2]
      sqdmlsl v0.2s, v1.2s, v2.s[3]
      sqdmlsl v0.2d, v1.2s, v2.s[4]
      sqdmlsl v0.2d, v1.2s, v22.s[4]
      sqdmlsl2 v0.4h, v1.8h, v1.h[2]
      sqdmlsl2 v0.4s, v1.8h, v1.h[8]
      sqdmlsl2 v0.4s, v1.8h, v16.h[2]
      sqdmlsl2 v0.2s, v1.4s, v1.s[2]
      sqdmlsl2 v0.2d, v1.4s, v1.s[4]
      sqdmlsl2 v0.2d, v1.4s, v22.s[4]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlsl v0.4h, v1.4h, v2.h[2]
// CHECK-ERROR:                ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmlsl v0.4s, v1.4h, v2.h[8]
// CHECK-ERROR:                                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlsl v0.4s, v1.4h, v16.h[2]
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlsl v0.2s, v1.2s, v2.s[3]
// CHECK-ERROR:                                   ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmlsl v0.2d, v1.2s, v2.s[4]
// CHECK-ERROR:                                   ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmlsl v0.2d, v1.2s, v22.s[4]
// CHECK-ERROR:                                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlsl2 v0.4h, v1.8h, v1.h[2]
// CHECK-ERROR:                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmlsl2 v0.4s, v1.8h, v1.h[8]
// CHECK-ERROR:                                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlsl2 v0.4s, v1.8h, v16.h[2]
// CHECK-ERROR:                                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlsl2 v0.2s, v1.4s, v1.s[2]
// CHECK-ERROR:                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmlsl2 v0.2d, v1.4s, v1.s[4]
// CHECK-ERROR:                                    ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmlsl2 v0.2d, v1.4s, v22.s[4]
// CHECK-ERROR:                                     ^

      mul v0.4h, v1.4h, v2.h[8]
      mul v0.4h, v1.4h, v16.h[8]
      mul v0.8h, v1.8h, v2.h[8]
      mul v0.8h, v1.8h, v16.h[8]
      mul v0.2s, v1.2s, v2.s[4]
      mul v0.2s, v1.2s, v22.s[4]
      mul v0.4s, v1.4s, v2.s[4]
      mul v0.4s, v1.4s, v22.s[4]
      mul v0.2d, v1.2d, v2.d[1]

// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        mul v0.4h, v1.4h, v2.h[8]
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        mul v0.4h, v1.4h, v16.h[8]
// CHECK-ERROR:                                ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        mul v0.8h, v1.8h, v2.h[8]
// CHECK-ERROR:                               ^
// CHECK-ERROR: invalid operand for instruction
// CHECK-ERROR:        mul v0.8h, v1.8h, v16.h[8]
// CHECK-ERROR:                                ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        mul v0.2s, v1.2s, v2.s[4]
// CHECK-ERROR:                               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        mul v0.2s, v1.2s, v22.s[4]
// CHECK-ERROR:                                ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        mul v0.4s, v1.4s, v2.s[4]
// CHECK-ERROR:                               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        mul v0.4s, v1.4s, v22.s[4]
// CHECK-ERROR:                                ^

      fmul v0.4h, v1.4h, v2.h[4]
      fmul v0.2s, v1.2s, v2.s[4]
      fmul v0.2s, v1.2s, v22.s[4]
      fmul v0.4s, v1.4s, v2.s[4]
      fmul v0.4s, v1.4s, v22.s[4]
      fmul v0.2d, v1.2d, v2.d[2]
      fmul v0.2d, v1.2d, v22.d[2]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        mul v0.2d, v1.2d, v2.d[1]
// CHECK-ERROR:               ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:        fmul v0.4h, v1.4h, v2.h[4]
// CHECK-ERROR:                ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmul v0.2s, v1.2s, v2.s[4]
// CHECK-ERROR:                                ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmul v0.2s, v1.2s, v22.s[4]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmul v0.4s, v1.4s, v2.s[4]
// CHECK-ERROR:                                ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmul v0.4s, v1.4s, v22.s[4]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmul v0.2d, v1.2d, v2.d[2]
// CHECK-ERROR:                                ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmul v0.2d, v1.2d, v22.d[2]
// CHECK-ERROR:                                 ^

      fmulx v0.4h, v1.4h, v2.h[4]
      fmulx v0.2s, v1.2s, v2.s[4]
      fmulx v0.2s, v1.2s, v22.s[4]
      fmulx v0.4s, v1.4s, v2.s[4]
      fmulx v0.4s, v1.4s, v22.s[4]
      fmulx v0.2d, v1.2d, v2.d[2]
      fmulx v0.2d, v1.2d, v22.d[2]

// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:        fmulx v0.4h, v1.4h, v2.h[4]
// CHECK-ERROR:                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmulx v0.2s, v1.2s, v2.s[4]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmulx v0.2s, v1.2s, v22.s[4]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmulx v0.4s, v1.4s, v2.s[4]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmulx v0.4s, v1.4s, v22.s[4]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmulx v0.2d, v1.2d, v2.d[2]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        fmulx v0.2d, v1.2d, v22.d[2]
// CHECK-ERROR:                                  ^

      smull v0.4h, v1.4h, v2.h[2]
      smull v0.4s, v1.4h, v2.h[8]
      smull v0.4s, v1.4h, v16.h[4]
      smull v0.2s, v1.2s, v2.s[2]
      smull v0.2d, v1.2s, v2.s[4]
      smull v0.2d, v1.2s, v22.s[4]
      smull2 v0.4h, v1.8h, v2.h[2]
      smull2 v0.4s, v1.8h, v2.h[8]
      smull2 v0.4s, v1.8h, v16.h[4]
      smull2 v0.2s, v1.4s, v2.s[2]
      smull2 v0.2d, v1.4s, v2.s[4]
      smull2 v0.2d, v1.4s, v22.s[4]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smull v0.4h, v1.4h, v2.h[2]
// CHECK-ERROR:              ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        smull v0.4s, v1.4h, v2.h[8]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smull v0.4s, v1.4h, v16.h[4]
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smull v0.2s, v1.2s, v2.s[2]
// CHECK-ERROR:              ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        smull v0.2d, v1.2s, v2.s[4]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        smull v0.2d, v1.2s, v22.s[4]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smull2 v0.4h, v1.8h, v2.h[2]
// CHECK-ERROR:               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        smull2 v0.4s, v1.8h, v2.h[8]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smull2 v0.4s, v1.8h, v16.h[4]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smull2 v0.2s, v1.4s, v2.s[2]
// CHECK-ERROR:               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        smull2 v0.2d, v1.4s, v2.s[4]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        smull2 v0.2d, v1.4s, v22.s[4]
// CHECK-ERROR:                                   ^

      umull v0.4h, v1.4h, v2.h[2]
      umull v0.4s, v1.4h, v2.h[8]
      umull v0.4s, v1.4h, v16.h[4]
      umull v0.2s, v1.2s, v2.s[2]
      umull v0.2d, v1.2s, v2.s[4]
      umull v0.2d, v1.2s, v22.s[4]
      umull2 v0.4h, v1.8h, v2.h[2]
      umull2 v0.4s, v1.8h, v2.h[8]
      umull2 v0.4s, v1.8h, v16.h[4]
      umull2 v0.2s, v1.4s, v2.s[2]
      umull2 v0.2d, v1.4s, v2.s[4]
      umull2 v0.2d, v1.4s, v22.s[4]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umull v0.4h, v1.4h, v2.h[2]
// CHECK-ERROR:              ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        umull v0.4s, v1.4h, v2.h[8]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umull v0.4s, v1.4h, v16.h[4]
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umull v0.2s, v1.2s, v2.s[2]
// CHECK-ERROR:              ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        umull v0.2d, v1.2s, v2.s[4]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        umull v0.2d, v1.2s, v22.s[4]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umull2 v0.4h, v1.8h, v2.h[2]
// CHECK-ERROR:               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        umull2 v0.4s, v1.8h, v2.h[8]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umull2 v0.4s, v1.8h, v16.h[4]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umull2 v0.2s, v1.4s, v2.s[2]
// CHECK-ERROR:               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        umull2 v0.2d, v1.4s, v2.s[4]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        umull2 v0.2d, v1.4s, v22.s[4]
// CHECK-ERROR:                                   ^

      sqdmull v0.4h, v1.4h, v2.h[2]
      sqdmull v0.4s, v1.4h, v2.h[8]
      sqdmull v0.4s, v1.4h, v16.h[4]
      sqdmull v0.2s, v1.2s, v2.s[2]
      sqdmull v0.2d, v1.2s, v2.s[4]
      sqdmull v0.2d, v1.2s, v22.s[4]
      sqdmull2 v0.4h, v1.8h, v2.h[2]
      sqdmull2 v0.4s, v1.8h, v2.h[8]
      sqdmull2 v0.4s, v1.8h, v16.h[4]
      sqdmull2 v0.2s, v1.4s, v2.s[2]
      sqdmull2 v0.2d, v1.4s, v2.s[4]
      sqdmull2 v0.2d, v1.4s, v22.s[4]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmull v0.4h, v1.4h, v2.h[2]
// CHECK-ERROR:                ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmull v0.4s, v1.4h, v2.h[8]
// CHECK-ERROR:                                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmull v0.4s, v1.4h, v16.h[4]
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmull v0.2s, v1.2s, v2.s[2]
// CHECK-ERROR:                ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmull v0.2d, v1.2s, v2.s[4]
// CHECK-ERROR:                                   ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmull v0.2d, v1.2s, v22.s[4]
// CHECK-ERROR:                                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmull2 v0.4h, v1.8h, v2.h[2]
// CHECK-ERROR:                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmull2 v0.4s, v1.8h, v2.h[8]
// CHECK-ERROR:                                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmull2 v0.4s, v1.8h, v16.h[4]
// CHECK-ERROR:                                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmull2 v0.2s, v1.4s, v2.s[2]
// CHECK-ERROR:                 ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmull2 v0.2d, v1.4s, v2.s[4]
// CHECK-ERROR:                                    ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmull2 v0.2d, v1.4s, v22.s[4]
// CHECK-ERROR:                                     ^

      sqdmulh v0.4h, v1.4h, v2.h[8]
      sqdmulh v0.4h, v1.4h, v16.h[2]
      sqdmulh v0.8h, v1.8h, v2.h[8]
      sqdmulh v0.8h, v1.8h, v16.h[2]
      sqdmulh v0.2s, v1.2s, v2.s[4]
      sqdmulh v0.2s, v1.2s, v22.s[4]
      sqdmulh v0.4s, v1.4s, v2.s[4]
      sqdmulh v0.4s, v1.4s, v22.s[4]
      sqdmulh v0.2d, v1.2d, v22.d[1]

// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmulh v0.4h, v1.4h, v2.h[8]
// CHECK-ERROR:                                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmulh v0.4h, v1.4h, v16.h[2]
// CHECK-ERROR:                              ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmulh v0.8h, v1.8h, v2.h[8]
// CHECK-ERROR:                                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmulh v0.8h, v1.8h, v16.h[2]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmulh v0.2s, v1.2s, v2.s[4]
// CHECK-ERROR:                                   ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmulh v0.2s, v1.2s, v22.s[4]
// CHECK-ERROR:                                    ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmulh v0.4s, v1.4s, v2.s[4]
// CHECK-ERROR:                                   ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqdmulh v0.4s, v1.4s, v22.s[4]
// CHECK-ERROR:                                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmulh v0.2d, v1.2d, v22.d[1]
// CHECK-ERROR:                   ^

      sqrdmulh v0.4h, v1.4h, v2.h[8]
      sqrdmulh v0.4h, v1.4h, v16.h[2]
      sqrdmulh v0.8h, v1.8h, v2.h[8]
      sqrdmulh v0.8h, v1.8h, v16.h[2]
      sqrdmulh v0.2s, v1.2s, v2.s[4]
      sqrdmulh v0.2s, v1.2s, v22.s[4]
      sqrdmulh v0.4s, v1.4s, v2.s[4]
      sqrdmulh v0.4s, v1.4s, v22.s[4]
      sqrdmulh v0.2d, v1.2d, v22.d[1]

// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqrdmulh v0.4h, v1.4h, v2.h[8]
// CHECK-ERROR:                                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqrdmulh v0.4h, v1.4h, v16.h[2]
// CHECK-ERROR:                               ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqrdmulh v0.8h, v1.8h, v2.h[8]
// CHECK-ERROR:                                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqrdmulh v0.8h, v1.8h, v16.h[2]
// CHECK-ERROR:                                   ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqrdmulh v0.2s, v1.2s, v2.s[4]
// CHECK-ERROR:                                    ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqrdmulh v0.2s, v1.2s, v22.s[4]
// CHECK-ERROR:                                     ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqrdmulh v0.4s, v1.4s, v2.s[4]
// CHECK-ERROR:                                    ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:        sqrdmulh v0.4s, v1.4s, v22.s[4]
// CHECK-ERROR:                                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqrdmulh v0.2d, v1.2d, v22.d[1]
// CHECK-ERROR:                    ^

//----------------------------------------------------------------------
// Across vectors
//----------------------------------------------------------------------

        saddlv b0, v1.8b
        saddlv b0, v1.16b
        saddlv h0, v1.4h
        saddlv h0, v1.8h
        saddlv s0, v1.2s
        saddlv s0, v1.4s
        saddlv d0, v1.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        saddlv b0, v1.8b
// CHECK-ERROR:               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        saddlv b0, v1.16b
// CHECK-ERROR:               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        saddlv h0, v1.4h
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        saddlv h0, v1.8h
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        saddlv s0, v1.2s
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        saddlv s0, v1.4s
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        saddlv d0, v1.2s
// CHECK-ERROR:                   ^

        uaddlv b0, v1.8b
        uaddlv b0, v1.16b
        uaddlv h0, v1.4h
        uaddlv h0, v1.8h
        uaddlv s0, v1.2s
        uaddlv s0, v1.4s
        uaddlv d0, v1.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uaddlv b0, v1.8b
// CHECK-ERROR:               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uaddlv b0, v1.16b
// CHECK-ERROR:               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uaddlv h0, v1.4h
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uaddlv h0, v1.8h
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uaddlv s0, v1.2s
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uaddlv s0, v1.4s
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uaddlv d0, v1.2s
// CHECK-ERROR:                   ^

        smaxv s0, v1.2s
        sminv s0, v1.2s
        umaxv s0, v1.2s
        uminv s0, v1.2s
        addv s0, v1.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smaxv s0, v1.2s
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sminv s0, v1.2s
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umaxv s0, v1.2s
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uminv s0, v1.2s
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        addv s0, v1.2s
// CHECK-ERROR:                 ^

        smaxv d0, v1.2d
        sminv d0, v1.2d
        umaxv d0, v1.2d
        uminv d0, v1.2d
        addv d0, v1.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        smaxv d0, v1.2d
// CHECK-ERROR:              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sminv d0, v1.2d
// CHECK-ERROR:              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        umaxv d0, v1.2d
// CHECK-ERROR:              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uminv d0, v1.2d
// CHECK-ERROR:              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        addv d0, v1.2d
// CHECK-ERROR:             ^

        fmaxnmv b0, v1.16b
        fminnmv b0, v1.16b
        fmaxv b0, v1.16b
        fminv b0, v1.16b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fmaxnmv b0, v1.16b
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fminnmv b0, v1.16b
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fmaxv b0, v1.16b
// CHECK-ERROR:              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fminv b0, v1.16b
// CHECK-ERROR:              ^

        fmaxnmv h0, v1.8h
        fminnmv h0, v1.8h
        fmaxv h0, v1.8h
        fminv h0, v1.8h

// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:        fmaxnmv h0, v1.8h
// CHECK-ERROR:                ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:        fminnmv h0, v1.8h
// CHECK-ERROR:                ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:        fmaxv h0, v1.8h
// CHECK-ERROR:              ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:        fminv h0, v1.8h
// CHECK-ERROR:              ^

        fmaxnmv d0, v1.2d
        fminnmv d0, v1.2d
        fmaxv d0, v1.2d
        fminv d0, v1.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fmaxnmv d0, v1.2d
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fminnmv d0, v1.2d
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fmaxv d0, v1.2d
// CHECK-ERROR:              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fminv d0, v1.2d
// CHECK-ERROR:              ^

//----------------------------------------------------------------------
// Floating-point Multiply Extended
//----------------------------------------------------------------------

    fmulx s20, h22, s15
    fmulx d23, d11, s1

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fmulx s20, h22, s15
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fmulx d23, d11, s1
// CHECK-ERROR:                          ^

//----------------------------------------------------------------------
// Floating-point Reciprocal Step
//----------------------------------------------------------------------

    frecps s21, s16, h13
    frecps d22, s30, d21

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          frecps s21, s16, h13
// CHECK-ERROR:                           ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          frecps d22, s30, d21
// CHECK-ERROR:                      ^

//----------------------------------------------------------------------
// Floating-point Reciprocal Square Root Step
//----------------------------------------------------------------------

    frsqrts s21, h5, s12
    frsqrts d8, s22, d18

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          frsqrts s21, h5, s12
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          frsqrts d8, s22, d18
// CHECK-ERROR:                      ^

//----------------------------------------------------------------------
// Vector load/store multiple N-element structure (class SIMD lselem)
//----------------------------------------------------------------------
         ld1 {x3}, [x2]
         ld1 {v4}, [x0]
         ld1 {v32.16b}, [x0]
         ld1 {v15.8h}, [x32]
// CHECK-ERROR: error: vector register expected
// CHECK-ERROR:        ld1 {x3}, [x2]
// CHECK-ERROR:             ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        ld1 {v4}, [x0]
// CHECK-ERROR:             ^
// CHECK-ERROR: error: vector register expected
// CHECK-ERROR:        ld1 {v32.16b}, [x0]
// CHECK-ERROR:             ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        ld1 {v15.8h}, [x32]
// CHECK-ERROR:                       ^

         ld1 {v0.16b, v2.16b}, [x0]
         ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
         ld1 v0.8b, v1.8b}, [x0]
         ld1 {v0.8h-v4.8h}, [x0]
         ld1 {v1.8h-v1.8h}, [x0]
         ld1 {v15.8h-v17.4h}, [x15]
         ld1 {v0.8b-v2.8b, [x0]
// CHECK-ERROR: error: registers must be sequential
// CHECK-ERROR:        ld1 {v0.16b, v2.16b}, [x0]
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid number of vectors
// CHECK-ERROR:        ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
// CHECK-ERROR:                                         ^
// CHECK-ERROR: error: unexpected token in argument list
// CHECK-ERROR:        ld1 v0.8b, v1.8b}, [x0]
// CHECK-ERROR:            ^
// CHECK-ERROR: error: invalid number of vectors
// CHECK-ERROR:        ld1 {v0.8h-v4.8h}, [x0]
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid number of vectors
// CHECK-ERROR:        ld1 {v1.8h-v1.8h}, [x0]
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR:        ld1 {v15.8h-v17.4h}, [x15]
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: '}' expected
// CHECK-ERROR:        ld1 {v0.8b-v2.8b, [x0]
// CHECK-ERROR:                        ^

         ld2 {v15.8h, v16.4h}, [x15]
         ld2 {v0.8b, v2.8b}, [x0]
         ld2 {v15.4h, v16.4h, v17.4h}, [x32]
         ld2 {v15.8h-v16.4h}, [x15]
         ld2 {v0.2d-v2.2d}, [x0]
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR:        ld2 {v15.8h, v16.4h}, [x15]
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: registers must be sequential
// CHECK-ERROR:        ld2 {v0.8b, v2.8b}, [x0]
// CHECK-ERROR:                    ^
// CHECK-ERROR:        ld2 {v15.4h, v16.4h, v17.4h}, [x32]
// CHECK-ERROR:            ^
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR:        ld2 {v15.8h-v16.4h}, [x15]
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        ld2 {v0.2d-v2.2d}, [x0]
// CHECK-ERROR:            ^

         ld3 {v15.8h, v16.8h, v17.4h}, [x15]
         ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
         ld3 {v0.8b, v2.8b, v3.8b}, [x0]
         ld3 {v15.8h-v17.4h}, [x15]
         ld3 {v31.4s-v2.4s}, [sp]
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR:        ld3 {v15.8h, v16.8h, v17.4h}, [x15]
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR:        ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: registers must be sequential
// CHECK-ERROR:        ld3 {v0.8b, v2.8b, v3.8b}, [x0]
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR:        ld3 {v15.8h-v17.4h}, [x15]
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        ld3 {v31.4s-v2.4s}, [sp]
// CHECK-ERROR:            ^

         ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
         ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
         ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
         ld4 {v15.8h-v18.4h}, [x15]
         ld4 {v31.2s-v1.2s}, [x31]
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR:        ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: registers must be sequential
// CHECK-ERROR:        ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid number of vectors
// CHECK-ERROR:        ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
// CHECK-ERROR:                                             ^
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR:        ld4 {v15.8h-v18.4h}, [x15]
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        ld4 {v31.2s-v1.2s}, [x31]
// CHECK-ERROR:            ^

         st1 {x3}, [x2]
         st1 {v4}, [x0]
         st1 {v32.16b}, [x0]
         st1 {v15.8h}, [x32]
// CHECK-ERROR: error: vector register expected
// CHECK-ERROR:        st1 {x3}, [x2]
// CHECK-ERROR:             ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        st1 {v4}, [x0]
// CHECK-ERROR:             ^
// CHECK-ERROR: error: vector register expected
// CHECK-ERROR:        st1 {v32.16b}, [x0]
// CHECK-ERROR:             ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        st1 {v15.8h}, [x32]
// CHECK-ERROR:                       ^

         st1 {v0.16b, v2.16b}, [x0]
         st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
         st1 v0.8b, v1.8b}, [x0]
         st1 {v0.8h-v4.8h}, [x0]
         st1 {v1.8h-v1.8h}, [x0]
         st1 {v15.8h-v17.4h}, [x15]
         st1 {v0.8b-v2.8b, [x0]
// CHECK-ERROR: error: registers must be sequential
// CHECK-ERROR:        st1 {v0.16b, v2.16b}, [x0]
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid number of vectors
// CHECK-ERROR:        st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
// CHECK-ERROR:                                         ^
// CHECK-ERROR: error: unexpected token in argument list
// CHECK-ERROR:        st1 v0.8b, v1.8b}, [x0]
// CHECK-ERROR:            ^
// CHECK-ERROR: error: invalid number of vectors
// CHECK-ERROR:        st1 {v0.8h-v4.8h}, [x0]
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid number of vectors
// CHECK-ERROR:        st1 {v1.8h-v1.8h}, [x0]
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR:        st1 {v15.8h-v17.4h}, [x15]
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: '}' expected
// CHECK-ERROR:        st1 {v0.8b-v2.8b, [x0]
// CHECK-ERROR:                        ^

         st2 {v15.8h, v16.4h}, [x15]
         st2 {v0.8b, v2.8b}, [x0]
         st2 {v15.4h, v16.4h, v17.4h}, [x30]
         st2 {v15.8h-v16.4h}, [x15]
         st2 {v0.2d-v2.2d}, [x0]
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR:        st2 {v15.8h, v16.4h}, [x15]
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: registers must be sequential
// CHECK-ERROR:        st2 {v0.8b, v2.8b}, [x0]
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        st2 {v15.4h, v16.4h, v17.4h}, [x30]
// CHECK-ERROR:            ^
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR:        st2 {v15.8h-v16.4h}, [x15]
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        st2 {v0.2d-v2.2d}, [x0]
// CHECK-ERROR:            ^

         st3 {v15.8h, v16.8h, v17.4h}, [x15]
         st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
         st3 {v0.8b, v2.8b, v3.8b}, [x0]
         st3 {v15.8h-v17.4h}, [x15]
         st3 {v31.4s-v2.4s}, [sp]
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR:        st3 {v15.8h, v16.8h, v17.4h}, [x15]
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR:        st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: registers must be sequential
// CHECK-ERROR:        st3 {v0.8b, v2.8b, v3.8b}, [x0]
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR:        st3 {v15.8h-v17.4h}, [x15]
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        st3 {v31.4s-v2.4s}, [sp]
// CHECK-ERROR:            ^

         st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
         st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
         st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
         st4 {v15.8h-v18.4h}, [x15]
         st4 {v31.2s-v1.2s}, [x31]
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR:        st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: registers must be sequential
// CHECK-ERROR:        st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid number of vectors
// CHECK-ERROR:        st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
// CHECK-ERROR:                                             ^
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR:        st4 {v15.8h-v18.4h}, [x15]
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        st4 {v31.2s-v1.2s}, [x31]
// CHECK-ERROR:            ^

//----------------------------------------------------------------------
// Vector post-index load/store multiple N-element structure
// (class SIMD lselem-post)
//----------------------------------------------------------------------
         ld1 {v0.16b}, [x0], #8
         ld1 {v0.8h, v1.16h}, [x0], x1
         ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          ld1 {v0.16b}, [x0], #8
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: invalid vector kind qualifier
// CHECK-ERROR:          ld1 {v0.8h, v1.16h}, [x0], x1
// CHECK-ERROR:                      ^
// CHECK-ERROR:  error: invalid operand for instruction
// CHECK-ERROR:          ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
// CHECK-ERROR:                                                  ^

         ld2 {v0.16b, v1.16b}, [x0], #16
         ld3 {v5.2s, v6.2s, v7.2s}, [x1], #48
         ld4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
// CHECK-ERROR:  error: invalid operand for instruction
// CHECK-ERROR:          ld2 {v0.16b, v1.16b}, [x0], #16
// CHECK-ERROR:                                      ^
// CHECK-ERROR:  error: invalid operand for instruction
// CHECK-ERROR:          ld3 {v5.2s, v6.2s, v7.2s}, [x1], #48
// CHECK-ERROR:                                           ^
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR:          ld4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
// CHECK-ERROR:                                     ^

         st1 {v0.16b}, [x0], #8
         st1 {v0.8h, v1.16h}, [x0], x1
         st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
// CHECK-ERROR:  error: invalid operand for instruction
// CHECK-ERROR:          st1 {v0.16b}, [x0], #8
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: invalid vector kind qualifier
// CHECK-ERROR:          st1 {v0.8h, v1.16h}, [x0], x1
// CHECK-ERROR:                      ^
// CHECK-ERROR:  error: invalid operand for instruction
// CHECK-ERROR:          st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
                                                 ^

         st2 {v0.16b, v1.16b}, [x0], #16
         st3 {v5.2s, v6.2s, v7.2s}, [x1], #48
         st4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
// CHECK-ERROR:  error: invalid operand for instruction
// CHECK-ERROR:          st2 {v0.16b, v1.16b}, [x0], #16
// CHECK-ERROR:                                      ^
// CHECK-ERROR:  error: invalid operand for instruction
// CHECK-ERROR:          st3 {v5.2s, v6.2s, v7.2s}, [x1], #48
// CHECK-ERROR:                                           ^
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR:          st4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
// CHECK-ERROR:                                     ^

//------------------------------------------------------------------------------
// Load single N-element structure to all lanes of N consecutive
// registers (N = 1,2,3,4)
//------------------------------------------------------------------------------
         ld1r {x1}, [x0]
         ld2r {v31.4s, v0.2s}, [sp]
         ld3r {v0.8b, v1.8b, v2.8b, v3.8b}, [x0]
         ld4r {v31.2s, v0.2s, v1.2d, v2.2s}, [sp]
// CHECK-ERROR: error: vector register expected
// CHECK-ERROR: ld1r {x1}, [x0]
// CHECK-ERROR:       ^
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR: ld2r {v31.4s, v0.2s}, [sp]
// CHECK-ERROR:               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR: ld3r {v0.8b, v1.8b, v2.8b, v3.8b}, [x0]
// CHECK-ERROR:      ^
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR: ld4r {v31.2s, v0.2s, v1.2d, v2.2s}, [sp]
// CHECK-ERROR:                      ^

//------------------------------------------------------------------------------
// Load/Store single N-element structure to/from one lane of N consecutive
// registers (N = 1, 2,3,4)
//------------------------------------------------------------------------------
         ld1 {v0.b}[16], [x0]
         ld2 {v15.h, v16.h}[8], [x15]
         ld3 {v31.s, v0.s, v1.s}[-1], [sp]
         ld4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR: ld1 {v0.b}[16], [x0]
// CHECK-ERROR:            ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR: ld2 {v15.h, v16.h}[8], [x15]
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: vector lane must be an integer in range
// CHECK-ERROR: ld3 {v31.s, v0.s, v1.s}[-1], [sp]
// CHECK-ERROR:                         ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR: ld4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
// CHECK-ERROR:                              ^

         st1 {v0.d}[16], [x0]
         st2 {v31.s, v0.s}[3], [8]
         st3 {v15.h, v16.h, v17.h}[-1], [x15]
         st4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR: st1 {v0.d}[16], [x0]
// CHECK-ERROR:            ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR: st2 {v31.s, v0.s}[3], [8]
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: vector lane must be an integer in range
// CHECK-ERROR: st3 {v15.h, v16.h, v17.h}[-1], [x15]
// CHECK-ERROR:                           ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR: st4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
// CHECK-ERROR:                              ^

//------------------------------------------------------------------------------
// Post-index of load single N-element structure to all lanes of N consecutive
// registers (N = 1,2,3,4)
//------------------------------------------------------------------------------
         ld1r {v15.8h}, [x15], #5
         ld2r {v0.2d, v1.2d}, [x0], #7
         ld3r {v15.4h, v16.4h, v17.4h}, [x15], #1
         ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp], sp
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR: ld1r {v15.8h}, [x15], #5
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR: ld2r {v0.2d, v1.2d}, [x0], #7
// CHECK-ERROR:                            ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR: ld3r {v15.4h, v16.4h, v17.4h}, [x15], #1
// CHECK-ERROR:                                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR: ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp], sp
// CHECK-ERROR:                                           ^

//------------------------------------------------------------------------------
// Post-index of Load/Store single N-element structure to/from one lane of N
// consecutive registers (N = 1, 2,3,4)
//------------------------------------------------------------------------------
         ld1 {v0.b}[0], [x0], #2
         ld2 {v15.h, v16.h}[0], [x15], #3
         ld3 {v31.s, v0.s, v1.d}[0], [sp], x9
         ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #24
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR: ld1 {v0.b}[0], [x0], #2
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR: ld2 {v15.h, v16.h}[0], [x15], #3
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: mismatched register size suffix
// CHECK-ERROR: ld3 {v31.s, v0.s, v1.d}[0], [sp], x9
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR: ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #24
// CHECK-ERROR:                                        ^

         st1 {v0.d}[0], [x0], #7
         st2 {v31.s, v0.s}[0], [sp], #6
         st3 {v15.h, v16.h, v17.h}[0], [x15], #8
         st4 {v0.b, v1.b, v2.b, v3.b}[1], [x0], #1
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR: st1 {v0.d}[0], [x0], #7
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR: st2 {v31.s, v0.s}[0], [sp], #6
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR: st3 {v15.h, v16.h, v17.h}[0], [x15], #8
// CHECK-ERROR:                                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR: st4 {v0.b, v1.b, v2.b, v3.b}[1], [x0], #1
// CHECK-ERROR:                                        ^


         ins v2.b[16], w1
         ins v7.h[8], w14
         ins v20.s[5], w30
         ins v1.d[2], x7
         ins v2.b[3], b1
         ins v7.h[2], h14
         ins v20.s[1], s30
         ins v1.d[0], d7

// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:         ins v2.b[16], w1
// CHECK-ERROR:                  ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:         ins v7.h[8], w14
// CHECK-ERROR:                  ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:         ins v20.s[5], w30
// CHECK-ERROR:                   ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:         ins v1.d[2], x7
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ins v2.b[3], b1
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ins v7.h[2], h14
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ins v20.s[1], s30
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ins v1.d[0], d7
// CHECK-ERROR:                      ^

         smov w1, v0.b[16]
         smov w14, v6.h[8]
         smov x1, v0.b[16]
         smov x14, v6.h[8]
         smov x20, v9.s[5]
         smov w1, v0.d[0]
         smov w14, v6.d[1]
         smov x1, v0.d[0]
         smov x14, v6.d[1]
         smov x20, v9.d[0]

// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:         smov w1, v0.b[16]
// CHECK-ERROR:                       ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:         smov w14, v6.h[8]
// CHECK-ERROR:                        ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:         smov x1, v0.b[16]
// CHECK-ERROR:                       ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:         smov x14, v6.h[8]
// CHECK-ERROR:                        ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:         smov x20, v9.s[5]
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         smov w1, v0.d[0]
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         smov w14, v6.d[1]
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         smov x1, v0.d[0]
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         smov x14, v6.d[1]
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         smov x20, v9.d[0]
// CHECK-ERROR:                      ^

         umov w1, v0.b[16]
         umov w14, v6.h[8]
         umov w20, v9.s[5]
         umov x7, v18.d[3]
         umov w1, v0.d[0]
         umov s20, v9.s[2]
         umov d7, v18.d[1]

// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:         umov w1, v0.b[16]
// CHECK-ERROR:                       ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:         umov w14, v6.h[8]
// CHECK-ERROR:                        ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:         umov w20, v9.s[5]
// CHECK-ERROR:                        ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:         umov x7, v18.d[3]
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         umov w1, v0.d[0]
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         umov s20, v9.s[2]
// CHECK-ERROR:              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         umov d7, v18.d[1]
// CHECK-ERROR:              ^

         Ins v1.h[2], v3.b[6]
         Ins v6.h[7], v7.s[2]
         Ins v15.d[0], v22.s[2]
         Ins v0.d[0], v4.b[1]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         Ins v1.h[2], v3.b[6]
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         Ins v6.h[7], v7.s[2]
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         Ins v15.d[0], v22.s[2]
// CHECK-ERROR:                           ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         Ins v0.d[0], v4.b[1]
// CHECK-ERROR:                         ^

         dup v1.8h, v2.b[2]
         dup v11.4s, v7.h[7]
         dup v17.2d, v20.s[0]
         dup v1.16b, v2.h[2]
         dup v11.8h, v7.s[3]
         dup v17.4s, v20.d[0]
         dup v5.2d, v1.b[1]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         dup v1.8h, v2.b[2]
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         dup v11.4s, v7.h[7]
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         dup v17.2d, v20.s[0]
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         dup v1.16b, v2.h[2]
// CHECK-ERROR:                        ^
// CHECK-ERROR: invalid operand for instruction
// CHECK-ERROR:         dup v11.8h, v7.s[3]
// CHECK-ERROR:                        ^
// CHECK-ERROR: invalid operand for instruction
// CHECK-ERROR:         dup v17.4s, v20.d[0]
// CHECK-ERROR:                         ^
// CHECK-ERROR: invalid operand for instruction
// CHECK-ERROR:         dup v5.2d, v1.b[1]
// CHECK-ERROR:                       ^

         dup v1.8b, b1
         dup v11.4h, h14
         dup v17.2s, s30
         dup v1.16b, d2
         dup v11.8s, w16
         dup v17.4d, w28
         dup v5.2d, w0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         dup v1.8b, b1
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         dup v11.4h, h14
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         dup v17.2s, s30
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         dup v1.16b, d2
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid vector kind qualifier
// CHECK-ERROR:         dup v11.8s, w16
// CHECK-ERROR:             ^
// CHECK-ERROR: error: invalid vector kind qualifier
// CHECK-ERROR:         dup v17.4d, w28
// CHECK-ERROR:             ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         dup v5.2d, w0
// CHECK-ERROR:                    ^

//----------------------------------------------------------------------
// Scalar Compare Bitwise Equal
//----------------------------------------------------------------------

         cmeq b20, d21, d22

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          cmeq b20, d21, d22
// CHECK-ERROR:               ^

//----------------------------------------------------------------------
// Scalar Compare Bitwise Equal To Zero
//----------------------------------------------------------------------

         cmeq d20, b21, #0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          cmeq d20, b21, #0
// CHECK-ERROR:                    ^

//----------------------------------------------------------------------
// Scalar Compare Unsigned Higher Or Same
//----------------------------------------------------------------------

         cmhs b20, d21, d22

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          cmhs b20, d21, d22
// CHECK-ERROR:               ^

        
//----------------------------------------------------------------------
// Scalar Compare Signed Greather Than Or Equal
//----------------------------------------------------------------------

         cmge b20, d21, d22

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          cmge b20, d21, d22
// CHECK-ERROR:               ^

//----------------------------------------------------------------------
// Scalar Compare Signed Greather Than Or Equal To Zero
//----------------------------------------------------------------------

         cmge d20, b21, #0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          cmge d20, b21, #0
// CHECK-ERROR:                    ^

//----------------------------------------------------------------------
// Scalar Compare Unsigned Higher
//----------------------------------------------------------------------

         cmhi b20, d21, d22

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          cmhi b20, d21, d22
// CHECK-ERROR:               ^

//----------------------------------------------------------------------
// Scalar Compare Signed Greater Than
//----------------------------------------------------------------------

         cmgt b20, d21, d22

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          cmgt b20, d21, d22
// CHECK-ERROR:               ^

//----------------------------------------------------------------------
// Scalar Compare Signed Greater Than Zero
//----------------------------------------------------------------------

         cmgt d20, b21, #0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          cmgt d20, b21, #0
// CHECK-ERROR:                    ^

//----------------------------------------------------------------------
// Scalar Compare Signed Less Than Or Equal To Zero
//----------------------------------------------------------------------

         cmle d20, b21, #0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          cmle d20, b21, #0
// CHECK-ERROR:                    ^

//----------------------------------------------------------------------
// Scalar Compare Less Than Zero
//----------------------------------------------------------------------

         cmlt d20, b21, #0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          cmlt d20, b21, #0
// CHECK-ERROR:                    ^

//----------------------------------------------------------------------
// Scalar Compare Bitwise Test Bits
//----------------------------------------------------------------------

         cmtst b20, d21, d22

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          cmtst b20, d21, d22
// CHECK-ERROR:                ^

//----------------------------------------------------------------------
// Scalar Floating-point Compare Mask Equal
//----------------------------------------------------------------------

         fcmeq s10, h11, s12
         fcmeq d20, s21, d22

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fcmeq s10, h11, s12
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fcmeq d20, s21, d22
// CHECK-ERROR:                     ^

//----------------------------------------------------------------------
// Scalar Floating-point Compare Mask Equal To Zero
//----------------------------------------------------------------------

         fcmeq h10, s11, #0.0
         fcmeq d20, s21, #0.0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fcmeq h10, s11, #0.0
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fcmeq d20, s21, #0.0
// CHECK-ERROR:                     ^

//----------------------------------------------------------------------
// Scalar Floating-point Compare Mask Greater Than Or Equal
//----------------------------------------------------------------------

         fcmge s10, h11, s12
         fcmge d20, s21, d22

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fcmge s10, h11, s12
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fcmge d20, s21, d22
// CHECK-ERROR:                     ^

//----------------------------------------------------------------------
// Scalar Floating-point Compare Mask Greater Than Or Equal To Zero
//----------------------------------------------------------------------

         fcmge h10, s11, #0.0
         fcmge d20, s21, #0.0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fcmge h10, s11, #0.0
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fcmge d20, s21, #0.0
// CHECK-ERROR:                     ^

//----------------------------------------------------------------------
// Scalar Floating-point Compare Mask Greather Than
//----------------------------------------------------------------------

         fcmgt s10, h11, s12
         fcmgt d20, s21, d22

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fcmgt s10, h11, s12
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fcmgt d20, s21, d22
// CHECK-ERROR:                     ^

//----------------------------------------------------------------------
// Scalar Floating-point Compare Mask Greather Than Zero
//----------------------------------------------------------------------

         fcmgt h10, s11, #0.0
         fcmgt d20, s21, #0.0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fcmgt h10, s11, #0.0
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fcmgt d20, s21, #0.0
// CHECK-ERROR:                     ^

//----------------------------------------------------------------------
// Scalar Floating-point Compare Mask Less Than Or Equal To Zero
//----------------------------------------------------------------------

         fcmle h10, s11, #0.0
         fcmle d20, s21, #0.0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fcmle h10, s11, #0.0
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fcmle d20, s21, #0.0
// CHECK-ERROR:                     ^

//----------------------------------------------------------------------
// Scalar Floating-point Compare Mask Less Than
//----------------------------------------------------------------------

         fcmlt h10, s11, #0.0
         fcmlt d20, s21, #0.0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fcmlt h10, s11, #0.0
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fcmlt d20, s21, #0.0
// CHECK-ERROR:                     ^

//----------------------------------------------------------------------
// Scalar Floating-point Absolute Compare Mask Greater Than Or Equal
//----------------------------------------------------------------------

         facge s10, h11, s12
         facge d20, s21, d22

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          facge s10, h11, s12
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          facge d20, s21, d22
// CHECK-ERROR:                     ^

//----------------------------------------------------------------------
// Scalar Floating-point Absolute Compare Mask Greater Than
//----------------------------------------------------------------------

         facgt s10, h11, s12
         facgt d20, d21, s22

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          facgt s10, h11, s12
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          facgt d20, d21, s22
// CHECK-ERROR:                          ^
        
//----------------------------------------------------------------------
// Scalar Signed Saturating Accumulated of Unsigned Value
//----------------------------------------------------------------------

        suqadd b0, h1
        suqadd h0, s1
        suqadd s0, d1
        suqadd d0, b0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        suqadd b0, h1
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        suqadd h0, s1
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        suqadd s0, d1
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        suqadd d0, b0
// CHECK-ERROR:                   ^

//----------------------------------------------------------------------
// Scalar Unsigned Saturating Accumulated of Signed Value
//----------------------------------------------------------------------

        usqadd b0, h1
        usqadd h0, s1
        usqadd s0, d1
        usqadd d0, b1

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        usqadd b0, h1
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        usqadd h0, s1
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        usqadd s0, d1
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        usqadd d0, b1
// CHECK-ERROR:                   ^

//----------------------------------------------------------------------
// Scalar Absolute Value
//----------------------------------------------------------------------

    abs d29, s24

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        abs d29, s24
// CHECK-ERROR:                 ^

//----------------------------------------------------------------------
// Scalar Negate
//----------------------------------------------------------------------

    neg d29, s24

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        neg d29, s24
// CHECK-ERROR:                 ^

//----------------------------------------------------------------------
// Signed Saturating Doubling Multiply-Add Long
//----------------------------------------------------------------------

    sqdmlal s17, h27, s12
    sqdmlal d19, s24, d12

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlal s17, h27, s12
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlal d19, s24, d12
// CHECK-ERROR:                          ^

//----------------------------------------------------------------------
// Signed Saturating Doubling Multiply-Subtract Long
//----------------------------------------------------------------------

    sqdmlsl s14, h12, s25
    sqdmlsl d12, s23, d13

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlsl s14, h12, s25
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmlsl d12, s23, d13
// CHECK-ERROR:                          ^

//----------------------------------------------------------------------
// Signed Saturating Doubling Multiply Long
//----------------------------------------------------------------------

    sqdmull s12, h22, s12
    sqdmull d15, s22, d12

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmull s12, h22, s12
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqdmull d15, s22, d12
// CHECK-ERROR:                          ^

//----------------------------------------------------------------------
// Scalar Signed Saturating Extract Unsigned Narrow
//----------------------------------------------------------------------

    sqxtun b19, b14
    sqxtun h21, h15
    sqxtun s20, s12

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqxtun b19, b14
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqxtun h21, h15
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqxtun s20, s12
// CHECK-ERROR:                    ^

//----------------------------------------------------------------------
// Scalar Signed Saturating Extract Signed Narrow
//----------------------------------------------------------------------

    sqxtn b18, b18
    sqxtn h20, h17
    sqxtn s19, s14

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqxtn b18, b18
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqxtn h20, h17
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sqxtn s19, s14
// CHECK-ERROR:                   ^


//----------------------------------------------------------------------
// Scalar Unsigned Saturating Extract Narrow
//----------------------------------------------------------------------

    uqxtn b18, b18
    uqxtn h20, h17
    uqxtn s19, s14

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uqxtn b18, b18
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uqxtn h20, h17
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        uqxtn s19, s14
// CHECK-ERROR:                   ^

//----------------------------------------------------------------------
// Scalar Signed Shift Right (Immediate)
//----------------------------------------------------------------------
        sshr d15, d16, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:        sshr d15, d16, #99
// CHECK-ERROR:                       ^

        sshr d15, s16, #31

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        sshr d15, s16, #31
// CHECK-ERROR:                  ^

//----------------------------------------------------------------------
// Scalar Unsigned Shift Right (Immediate)
//----------------------------------------------------------------------

        ushr d10, d17, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:        ushr d10, d17, #99
// CHECK-ERROR:                       ^

//----------------------------------------------------------------------
// Scalar Signed Rounding Shift Right (Immediate)
//----------------------------------------------------------------------

        srshr d19, d18, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:        srshr d19, d18, #99
// CHECK-ERROR:                        ^

//----------------------------------------------------------------------
// Scalar Unigned Rounding Shift Right (Immediate)
//----------------------------------------------------------------------

        urshr d20, d23, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:        urshr d20, d23, #99
// CHECK-ERROR:                        ^

//----------------------------------------------------------------------
// Scalar Signed Shift Right and Accumulate (Immediate)
//----------------------------------------------------------------------

        ssra d18, d12, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:        ssra d18, d12, #99
// CHECK-ERROR:                       ^

//----------------------------------------------------------------------
// Scalar Unsigned Shift Right and Accumulate (Immediate)
//----------------------------------------------------------------------

        usra d20, d13, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:        usra d20, d13, #99
// CHECK-ERROR:                       ^

//----------------------------------------------------------------------
// Scalar Signed Rounding Shift Right and Accumulate (Immediate)
//----------------------------------------------------------------------

        srsra d15, d11, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:        srsra d15, d11, #99
// CHECK-ERROR:                        ^

//----------------------------------------------------------------------
// Scalar Unsigned Rounding Shift Right and Accumulate (Immediate)
//----------------------------------------------------------------------

        ursra d18, d10, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:        ursra d18, d10, #99
// CHECK-ERROR:                        ^

//----------------------------------------------------------------------
// Scalar Shift Left (Immediate)
//----------------------------------------------------------------------

        shl d7, d10, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR:        shl d7, d10, #99
// CHECK-ERROR:                     ^

        shl d7, s16, #31
        
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        shl d7, s16, #31
// CHECK-ERROR:                ^

//----------------------------------------------------------------------
// Signed Saturating Shift Left (Immediate)
//----------------------------------------------------------------------

        sqshl b11, b19, #99
        sqshl h13, h18, #99
        sqshl s14, s17, #99
        sqshl d15, d16, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
// CHECK-ERROR:        sqshl b11, b19, #99
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR:        sqshl h13, h18, #99
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR:        sqshl s14, s17, #99
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR:        sqshl d15, d16, #99
// CHECK-ERROR:                        ^

//----------------------------------------------------------------------
// Unsigned Saturating Shift Left (Immediate)
//----------------------------------------------------------------------

        uqshl b18, b15, #99
        uqshl h11, h18, #99
        uqshl s14, s19, #99
        uqshl d15, d12, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
// CHECK-ERROR:        uqshl b18, b15, #99
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR:        uqshl h11, h18, #99
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR:        uqshl s14, s19, #99
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR:        uqshl d15, d12, #99
// CHECK-ERROR:                        ^

//----------------------------------------------------------------------
// Signed Saturating Shift Left Unsigned (Immediate)
//----------------------------------------------------------------------

        sqshlu b15, b18, #99
        sqshlu h19, h17, #99
        sqshlu s16, s14, #99
        sqshlu d11, d13, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
// CHECK-ERROR:        sqshlu  b15, b18, #99
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR:        sqshlu  h19, h17, #99
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR:        sqshlu  s16, s14, #99
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR:        sqshlu  d11, d13, #99
// CHECK-ERROR:                          ^

//----------------------------------------------------------------------
// Shift Right And Insert (Immediate)
//----------------------------------------------------------------------

        sri d10, d12, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:        sri d10, d12, #99
// CHECK-ERROR:                      ^

//----------------------------------------------------------------------
// Shift Left And Insert (Immediate)
//----------------------------------------------------------------------

        sli d10, d14, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR:        sli d10, d14, #99
// CHECK-ERROR:                      ^

//----------------------------------------------------------------------
// Signed Saturating Shift Right Narrow (Immediate)
//----------------------------------------------------------------------

        sqshrn b10, h15, #99
        sqshrn h17, s10, #99
        sqshrn s18, d10, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:        sqshrn  b10, h15, #99
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:        sqshrn  h17, s10, #99
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:        sqshrn  s18, d10, #99
// CHECK-ERROR:                          ^
        
//----------------------------------------------------------------------
// Unsigned Saturating Shift Right Narrow (Immediate)
//----------------------------------------------------------------------

        uqshrn b12, h10, #99
        uqshrn h10, s14, #99
        uqshrn s10, d12, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:        uqshrn  b12, h10, #99
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:        uqshrn  h10, s14, #99
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:        uqshrn  s10, d12, #99
// CHECK-ERROR:                          ^
        
//----------------------------------------------------------------------
// Signed Saturating Rounded Shift Right Narrow (Immediate)
//----------------------------------------------------------------------

        sqrshrn b10, h13, #99
        sqrshrn h15, s10, #99
        sqrshrn s15, d12, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:        sqrshrn b10, h13, #99
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:        sqrshrn h15, s10, #99
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:        sqrshrn s15, d12, #99
// CHECK-ERROR:                          ^
        
//----------------------------------------------------------------------
// Unsigned Saturating Rounded Shift Right Narrow (Immediate)
//----------------------------------------------------------------------

        uqrshrn b10, h12, #99
        uqrshrn h12, s10, #99
        uqrshrn s10, d10, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:        uqrshrn b10, h12, #99
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:        uqrshrn h12, s10, #99
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:        uqrshrn s10, d10, #99
// CHECK-ERROR:                          ^

//----------------------------------------------------------------------
// Signed Saturating Shift Right Unsigned Narrow (Immediate)
//----------------------------------------------------------------------

        sqshrun b15, h10, #99
        sqshrun h20, s14, #99
        sqshrun s10, d15, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:        sqshrun b15, h10, #99
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:        sqshrun h20, s14, #99
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:        sqshrun s10, d15, #99
// CHECK-ERROR:                          ^

//----------------------------------------------------------------------
// Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate)
//----------------------------------------------------------------------

        sqrshrun b17, h10, #99
        sqrshrun h10, s13, #99
        sqrshrun s22, d16, #99

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
// CHECK-ERROR:        sqrshrun b17, h10, #99
// CHECK-ERROR:                           ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
// CHECK-ERROR:        sqrshrun h10, s13, #99
// CHECK-ERROR:                           ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:        sqrshrun s22, d16, #99
// CHECK-ERROR:                           ^

//----------------------------------------------------------------------
// Scalar Signed Fixed-point Convert To Floating-Point (Immediate)
//----------------------------------------------------------------------

    scvtf s22, s13, #0
    scvtf s22, s13, #33
    scvtf d21, d12, #65
    scvtf d21, s12, #31
        
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:        scvtf s22, s13, #0
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:        scvtf s22, s13, #33
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:        scvtf d21, d12, #65
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        scvtf d21, s12, #31
// CHECK-ERROR:                   ^

//----------------------------------------------------------------------
// Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate)
//----------------------------------------------------------------------

    ucvtf s22, s13, #34
    ucvtf d21, d14, #65
    ucvtf d21, s14, #64
        
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:        ucvtf s22, s13, #34
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:        ucvtf d21, d14, #65
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        ucvtf d21, s14, #64
// CHECK-ERROR:                   ^

//------------------------------------------------------------------------------
// Element reverse
//------------------------------------------------------------------------------
         rev64 v6.2d, v8.2d
         rev32 v30.2s, v31.2s
         rev32 v30.4s, v31.4s
         rev32 v30.2d, v31.2d
         rev16 v21.4h, v1.4h
         rev16 v21.8h, v1.8h
         rev16 v21.2s, v1.2s
         rev16 v21.4s, v1.4s
         rev16 v21.2d, v1.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         rev64 v6.2d, v8.2d
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         rev32 v30.2s, v31.2s
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         rev32 v30.4s, v31.4s
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         rev32 v30.2d, v31.2d
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         rev16 v21.4h, v1.4h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         rev16 v21.8h, v1.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         rev16 v21.2s, v1.2s
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         rev16 v21.4s, v1.4s
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         rev16 v21.2d, v1.2d
// CHECK-ERROR:                   ^

//------------------------------------------------------------------------------
// Signed integer pairwise add long
//------------------------------------------------------------------------------

         saddlp v3.8h, v21.8h
         saddlp v8.8b, v5.8b
         saddlp v9.8h, v1.4s
         saddlp v0.4s, v1.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         saddlp v3.8h, v21.8h
// CHECK-ERROR:                           ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         saddlp v8.8b, v5.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         saddlp v9.8h, v1.4s
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         saddlp v0.4s, v1.2d
// CHECK-ERROR:                          ^

//------------------------------------------------------------------------------
// Unsigned integer pairwise add long
//------------------------------------------------------------------------------

         uaddlp v3.8h, v21.8h
         uaddlp v8.8b, v5.8b
         uaddlp v9.8h, v1.4s
         uaddlp v0.4s, v1.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uaddlp v3.8h, v21.8h
// CHECK-ERROR:                           ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uaddlp v8.8b, v5.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uaddlp v9.8h, v1.4s
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uaddlp v0.4s, v1.2d
// CHECK-ERROR:                          ^

//------------------------------------------------------------------------------
// Signed integer pairwise add and accumulate long
//------------------------------------------------------------------------------

         sadalp v3.16b, v21.16b
         sadalp v8.4h, v5.4h
         sadalp v9.4s, v1.4s
         sadalp v0.4h, v1.2s
         sadalp v12.2d, v4.8h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sadalp v3.16b, v21.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sadalp v8.4h, v5.4h
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sadalp v9.4s, v1.4s
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sadalp v0.4h, v1.2s
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sadalp v12.2d, v4.8h
// CHECK-ERROR:                           ^

//------------------------------------------------------------------------------
// Unsigned integer pairwise add and accumulate long
//------------------------------------------------------------------------------

         uadalp v3.16b, v21.16b
         uadalp v8.4h, v5.4h
         uadalp v9.4s, v1.4s
         uadalp v0.4h, v1.2s
         uadalp v12.2d, v4.8h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uadalp v3.16b, v21.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uadalp v8.4h, v5.4h
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uadalp v9.4s, v1.4s
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uadalp v0.4h, v1.2s
// CHECK-ERROR:                          ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uadalp v12.2d, v4.8h
// CHECK-ERROR:                           ^

//------------------------------------------------------------------------------
// Signed integer saturating accumulate of unsigned value
//------------------------------------------------------------------------------

         suqadd v0.16b, v31.8b
         suqadd v1.8b, v9.8h
         suqadd v13.4h, v21.4s
         suqadd v4.2s, v0.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         suqadd v0.16b, v31.8b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         suqadd v1.8b, v9.8h
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         suqadd v13.4h, v21.4s
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         suqadd v4.2s, v0.2d
// CHECK-ERROR:                       ^

//------------------------------------------------------------------------------
// Unsigned integer saturating accumulate of signed value
//------------------------------------------------------------------------------

         usqadd v0.16b, v31.8b
         usqadd v2.8h, v4.4h
         usqadd v13.4h, v21.4s
         usqadd v4.2s, v0.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         usqadd v0.16b, v31.8b
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         usqadd v2.8h, v4.4h
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         usqadd v13.4h, v21.4s
// CHECK-ERROR:                        ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         usqadd v4.2s, v0.2d
// CHECK-ERROR:                       ^

//------------------------------------------------------------------------------
// Integer saturating absolute
//------------------------------------------------------------------------------

         sqabs v0.16b, v31.8b
         sqabs v2.8h, v4.4h
         sqabs v6.4s, v8.2s
         sqabs v6.2d, v8.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqabs v0.16b, v31.8b
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqabs v2.8h, v4.4h
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqabs v6.4s, v8.2s
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqabs v6.2d, v8.2s
// CHECK-ERROR:                      ^

//------------------------------------------------------------------------------
// Signed integer saturating negate
//------------------------------------------------------------------------------

         sqneg v0.16b, v31.8b
         sqneg v2.8h, v4.4h
         sqneg v6.4s, v8.2s
         sqneg v6.2d, v8.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqneg v0.16b, v31.8b
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqneg v2.8h, v4.4h
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqneg v6.4s, v8.2s
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqneg v6.2d, v8.2s
// CHECK-ERROR:                      ^

//------------------------------------------------------------------------------
// Integer absolute
//------------------------------------------------------------------------------

         abs v0.16b, v31.8b
         abs v2.8h, v4.4h
         abs v6.4s, v8.2s
         abs v6.2d, v8.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         abs v0.16b, v31.8b
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         abs v2.8h, v4.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         abs v6.4s, v8.2s
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         abs v6.2d, v8.2s
// CHECK-ERROR:                    ^

//------------------------------------------------------------------------------
// Integer count leading sign bits
//------------------------------------------------------------------------------

         cls v0.2d, v31.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         cls v0.2d, v31.2d
// CHECK-ERROR:                ^

//------------------------------------------------------------------------------
// Integer count leading zeros
//------------------------------------------------------------------------------

         clz v0.2d, v31.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         clz v0.2d, v31.2d
// CHECK-ERROR:                ^

//------------------------------------------------------------------------------
// Population count
//------------------------------------------------------------------------------

         cnt v2.8h, v4.8h
         cnt v6.4s, v8.4s
         cnt v6.2d, v8.2d
         cnt v13.4h, v21.4h
         cnt v4.2s, v0.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         cnt v2.8h, v4.8h
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         cnt v6.4s, v8.4s
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         cnt v6.2d, v8.2d
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         cnt v13.4h, v21.4h
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         cnt v4.2s, v0.2s
// CHECK-ERROR:                ^


//------------------------------------------------------------------------------
// Bitwise NOT
//------------------------------------------------------------------------------

         not v2.8h, v4.8h
         not v6.4s, v8.4s
         not v6.2d, v8.2d
         not v13.4h, v21.4h
         not v4.2s, v0.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         not v2.8h, v4.8h
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         not v6.4s, v8.4s
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         not v6.2d, v8.2d
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         not v13.4h, v21.4h
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         not v4.2s, v0.2s
// CHECK-ERROR:                ^

//------------------------------------------------------------------------------
// Bitwise reverse
//------------------------------------------------------------------------------

         rbit v2.8h, v4.8h
         rbit v6.4s, v8.4s
         rbit v6.2d, v8.2d
         rbit v13.4h, v21.4h
         rbit v4.2s, v0.2s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         rbit v2.8h, v4.8h
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         rbit v6.4s, v8.4s
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         rbit v6.2d, v8.2d
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         rbit v13.4h, v21.4h
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         rbit v4.2s, v0.2s
// CHECK-ERROR:                 ^

//------------------------------------------------------------------------------
// Floating-point absolute
//------------------------------------------------------------------------------

         fabs v0.16b, v31.16b
         fabs v2.8h, v4.8h
         fabs v1.8b, v9.8b
         fabs v13.4h, v21.4h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fabs v0.16b, v31.16b
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fabs v2.8h, v4.8h
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fabs v1.8b, v9.8b
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fabs v13.4h, v21.4h
// CHECK-ERROR:                  ^

//------------------------------------------------------------------------------
// Floating-point negate
//------------------------------------------------------------------------------

         fneg v0.16b, v31.16b
         fneg v2.8h, v4.8h
         fneg v1.8b, v9.8b
         fneg v13.4h, v21.4h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fneg v0.16b, v31.16b
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fneg v2.8h, v4.8h
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fneg v1.8b, v9.8b
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fneg v13.4h, v21.4h
// CHECK-ERROR:                  ^

//------------------------------------------------------------------------------
// Integer extract and narrow
//------------------------------------------------------------------------------

         xtn v0.16b, v31.8h
         xtn v2.8h, v4.4s
         xtn v6.4s, v8.2d
         xtn2 v1.8b, v9.8h
         xtn2 v13.4h, v21.4s
         xtn2 v4.2s, v0.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         xtn v0.16b, v31.8h
// CHECK-ERROR:             ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         xtn v2.8h, v4.4s
// CHECK-ERROR:             ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         xtn v6.4s, v8.2d
// CHECK-ERROR:             ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         xtn2 v1.8b, v9.8h
// CHECK-ERROR:              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         xtn2 v13.4h, v21.4s
// CHECK-ERROR:              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         xtn2 v4.2s, v0.2d
// CHECK-ERROR:              ^

//------------------------------------------------------------------------------
// Signed integer saturating extract and unsigned narrow
//------------------------------------------------------------------------------

         sqxtun v0.16b, v31.8h
         sqxtun v2.8h, v4.4s
         sqxtun v6.4s, v8.2d
         sqxtun2 v1.8b, v9.8h
         sqxtun2 v13.4h, v21.4s
         sqxtun2 v4.2s, v0.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqxtun v0.16b, v31.8h
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqxtun v2.8h, v4.4s
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqxtun v6.4s, v8.2d
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqxtun2 v1.8b, v9.8h
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqxtun2 v13.4h, v21.4s
// CHECK-ERROR:                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqxtun2 v4.2s, v0.2d
// CHECK-ERROR:                 ^

//------------------------------------------------------------------------------
// Signed integer saturating extract and narrow
//------------------------------------------------------------------------------

         sqxtn v0.16b, v31.8h
         sqxtn v2.8h, v4.4s
         sqxtn v6.4s, v8.2d
         sqxtn2 v1.8b, v9.8h
         sqxtn2 v13.4h, v21.4s
         sqxtn2 v4.2s, v0.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqxtn v0.16b, v31.8h
// CHECK-ERROR:               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqxtn v2.8h, v4.4s
// CHECK-ERROR:               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqxtn v6.4s, v8.2d
// CHECK-ERROR:               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqxtn2 v1.8b, v9.8h
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqxtn2 v13.4h, v21.4s
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         sqxtn2 v4.2s, v0.2d
// CHECK-ERROR:                ^

//------------------------------------------------------------------------------
// Unsigned integer saturating extract and narrow
//------------------------------------------------------------------------------

         uqxtn v0.16b, v31.8h
         uqxtn v2.8h, v4.4s
         uqxtn v6.4s, v8.2d
         uqxtn2 v1.8b, v9.8h
         uqxtn2 v13.4h, v21.4s
         uqxtn2 v4.2s, v0.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uqxtn v0.16b, v31.8h
// CHECK-ERROR:               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uqxtn v2.8h, v4.4s
// CHECK-ERROR:               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uqxtn v6.4s, v8.2d
// CHECK-ERROR:               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uqxtn2 v1.8b, v9.8h
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uqxtn2 v13.4h, v21.4s
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         uqxtn2 v4.2s, v0.2d
// CHECK-ERROR:                ^

//------------------------------------------------------------------------------
// Integer shift left long
//------------------------------------------------------------------------------

         shll2 v2.8h, v4.16b, #7
         shll2 v6.4s, v8.8h, #15
         shll2 v6.2d, v8.4s, #31
         shll v2.8h, v4.16b, #8
         shll v6.4s, v8.8h, #16
         shll v6.2d, v8.4s, #32
         shll v2.8h, v4.8b, #8
         shll v6.4s, v8.4h, #16
         shll v6.2d, v8.2s, #32
         shll2 v2.8h, v4.8b, #5
         shll2 v6.4s, v8.4h, #14
         shll2 v6.2d, v8.2s, #1

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         shll2 v2.8h, v4.16b, #7
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         shll2 v6.4s, v8.8h, #15
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         shll2 v6.2d, v8.4s, #31
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         shll v2.8h, v4.16b, #8
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         shll v6.4s, v8.8h, #16
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         shll v6.2d, v8.4s, #32
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         shll2 v2.8h, v4.8b, #5
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         shll2 v6.4s, v8.4h, #14
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         shll2 v6.2d, v8.2s, #1
// CHECK-ERROR:                      ^

//------------------------------------------------------------------------------
// Floating-point convert downsize
//------------------------------------------------------------------------------

         fcvtn v2.8h, v4.4s
         fcvtn v6.4s, v8.2d
         fcvtn2 v13.4h, v21.4s
         fcvtn2 v4.2s, v0.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtn v2.8h, v4.4s
// CHECK-ERROR:               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtn v6.4s, v8.2d
// CHECK-ERROR:               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtn2 v13.4h, v21.4s
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtn2 v4.2s, v0.2d
// CHECK-ERROR:                ^

//------------------------------------------------------------------------------
// Floating-point convert downsize with inexact
//------------------------------------------------------------------------------

         fcvtxn v6.4s, v8.2d
         fcvtxn2 v4.2s, v0.2d

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtxn v6.4s, v8.2d
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtxn2 v4.2s, v0.2d
// CHECK-ERROR:                 ^

//------------------------------------------------------------------------------
// Floating-point convert upsize
//------------------------------------------------------------------------------

         fcvtl2 v9.4s, v1.4h
         fcvtl2 v0.2d, v1.2s
         fcvtl v12.4s, v4.8h
         fcvtl v17.2d, v28.4s

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtl2 v9.4s, v1.4h
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtl2 v0.2d, v1.2s
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtl v12.4s, v4.8h
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtl v17.2d, v28.4s
// CHECK-ERROR:                       ^

//------------------------------------------------------------------------------
// Floating-point round to integral
//------------------------------------------------------------------------------

         frintn v0.16b, v31.16b
         frintn v2.8h, v4.8h
         frintn v1.8b, v9.8b
         frintn v13.4h, v21.4h

         frinta v0.16b, v31.16b
         frinta v2.8h, v4.8h
         frinta v1.8b, v9.8b
         frinta v13.4h, v21.4h

         frintp v0.16b, v31.16b
         frintp v2.8h, v4.8h
         frintp v1.8b, v9.8b
         frintp v13.4h, v21.4h

         frintm v0.16b, v31.16b
         frintm v2.8h, v4.8h
         frintm v1.8b, v9.8b
         frintm v13.4h, v21.4h

         frintx v0.16b, v31.16b
         frintx v2.8h, v4.8h
         frintx v1.8b, v9.8b
         frintx v13.4h, v21.4h

         frintz v0.16b, v31.16b
         frintz v2.8h, v4.8h
         frintz v1.8b, v9.8b
         frintz v13.4h, v21.4h

         frinti v0.16b, v31.16b
         frinti v2.8h, v4.8h
         frinti v1.8b, v9.8b
         frinti v13.4h, v21.4h

         fcvtns v0.16b, v31.16b
         fcvtns v2.8h, v4.8h
         fcvtns v1.8b, v9.8b
         fcvtns v13.4h, v21.4h

         fcvtnu v0.16b, v31.16b
         fcvtnu v2.8h, v4.8h
         fcvtnu v1.8b, v9.8b
         fcvtnu v13.4h, v21.4h

         fcvtps v0.16b, v31.16b
         fcvtps v2.8h, v4.8h
         fcvtps v1.8b, v9.8b
         fcvtps v13.4h, v21.4h

         fcvtpu v0.16b, v31.16b
         fcvtpu v2.8h, v4.8h
         fcvtpu v1.8b, v9.8b
         fcvtpu v13.4h, v21.4h

         fcvtms v0.16b, v31.16b
         fcvtms v2.8h, v4.8h
         fcvtms v1.8b, v9.8b
         fcvtms v13.4h, v21.4h

         fcvtmu v0.16b, v31.16b
         fcvtmu v2.8h, v4.8h
         fcvtmu v1.8b, v9.8b
         fcvtmu v13.4h, v21.4h

         fcvtzs v0.16b, v31.16b
         fcvtzs v2.8h, v4.8h
         fcvtzs v1.8b, v9.8b
         fcvtzs v13.4h, v21.4h

         fcvtzu v0.16b, v31.16b
         fcvtzu v2.8h, v4.8h
         fcvtzu v1.8b, v9.8b
         fcvtzu v13.4h, v21.4h

         fcvtas v0.16b, v31.16b
         fcvtas v2.8h, v4.8h
         fcvtas v1.8b, v9.8b
         fcvtas v13.4h, v21.4h

         fcvtau v0.16b, v31.16b
         fcvtau v2.8h, v4.8h
         fcvtau v1.8b, v9.8b
         fcvtau v13.4h, v21.4h

         urecpe v0.16b, v31.16b
         urecpe v2.8h, v4.8h
         urecpe v1.8b, v9.8b
         urecpe v13.4h, v21.4h
         urecpe v1.2d, v9.2d

         ursqrte v0.16b, v31.16b
         ursqrte v2.8h, v4.8h
         ursqrte v1.8b, v9.8b
         ursqrte v13.4h, v21.4h
         ursqrte v1.2d, v9.2d

         scvtf v0.16b, v31.16b
         scvtf v2.8h, v4.8h
         scvtf v1.8b, v9.8b
         scvtf v13.4h, v21.4h

         ucvtf v0.16b, v31.16b
         ucvtf v2.8h, v4.8h
         ucvtf v1.8b, v9.8b
         ucvtf v13.4h, v21.4h

         frecpe v0.16b, v31.16b
         frecpe v2.8h, v4.8h
         frecpe v1.8b, v9.8b
         frecpe v13.4h, v21.4h

         frsqrte v0.16b, v31.16b
         frsqrte v2.8h, v4.8h
         frsqrte v1.8b, v9.8b
         frsqrte v13.4h, v21.4h

         fsqrt v0.16b, v31.16b
         fsqrt v2.8h, v4.8h
         fsqrt v1.8b, v9.8b
         fsqrt v13.4h, v21.4h

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         frintn v0.16b, v31.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         frintn v2.8h, v4.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         frintn v1.8b, v9.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         frintn v13.4h, v21.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         frinta v0.16b, v31.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         frinta v2.8h, v4.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         frinta v1.8b, v9.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         frinta v13.4h, v21.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         frintp v0.16b, v31.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         frintp v2.8h, v4.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         frintp v1.8b, v9.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         frintp v13.4h, v21.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         frintm v0.16b, v31.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         frintm v2.8h, v4.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         frintm v1.8b, v9.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         frintm v13.4h, v21.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         frintx v0.16b, v31.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         frintx v2.8h, v4.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         frintx v1.8b, v9.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         frintx v13.4h, v21.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         frintz v0.16b, v31.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         frintz v2.8h, v4.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         frintz v1.8b, v9.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         frintz v13.4h, v21.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         frinti v0.16b, v31.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         frinti v2.8h, v4.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         frinti v1.8b, v9.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         frinti v13.4h, v21.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtns v0.16b, v31.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtns v2.8h, v4.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtns v1.8b, v9.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtns v13.4h, v21.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtnu v0.16b, v31.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtnu v2.8h, v4.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtnu v1.8b, v9.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtnu v13.4h, v21.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtps v0.16b, v31.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtps v2.8h, v4.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtps v1.8b, v9.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtps v13.4h, v21.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtpu v0.16b, v31.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtpu v2.8h, v4.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtpu v1.8b, v9.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtpu v13.4h, v21.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtms v0.16b, v31.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtms v2.8h, v4.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtms v1.8b, v9.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtms v13.4h, v21.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtmu v0.16b, v31.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtmu v2.8h, v4.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtmu v1.8b, v9.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtmu v13.4h, v21.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtzs v0.16b, v31.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtzs v2.8h, v4.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtzs v1.8b, v9.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtzs v13.4h, v21.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtzu v0.16b, v31.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtzu v2.8h, v4.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtzu v1.8b, v9.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtzu v13.4h, v21.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtas v0.16b, v31.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtas v2.8h, v4.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtas v1.8b, v9.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtas v13.4h, v21.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtau v0.16b, v31.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtau v2.8h, v4.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fcvtau v1.8b, v9.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fcvtau v13.4h, v21.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         urecpe v0.16b, v31.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         urecpe v2.8h, v4.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         urecpe v1.8b, v9.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         urecpe v13.4h, v21.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         urecpe v1.2d, v9.2d
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ursqrte v0.16b, v31.16b
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ursqrte v2.8h, v4.8h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ursqrte v1.8b, v9.8b
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ursqrte v13.4h, v21.4h
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ursqrte v1.2d, v9.2d
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         scvtf v0.16b, v31.16b
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         scvtf v2.8h, v4.8h
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         scvtf v1.8b, v9.8b
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         scvtf v13.4h, v21.4h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ucvtf v0.16b, v31.16b
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         ucvtf v2.8h, v4.8h
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ucvtf v1.8b, v9.8b
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         ucvtf v13.4h, v21.4h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         frecpe v0.16b, v31.16b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         frecpe v2.8h, v4.8h
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         frecpe v1.8b, v9.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         frecpe v13.4h, v21.4h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         frsqrte v0.16b, v31.16b
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         frsqrte v2.8h, v4.8h
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         frsqrte v1.8b, v9.8b
// CHECK-ERROR:                    ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         frsqrte v13.4h, v21.4h
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fsqrt v0.16b, v31.16b
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fsqrt v2.8h, v4.8h
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         fsqrt v1.8b, v9.8b
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: instruction requires: fullfp16
// CHECK-ERROR:         fsqrt v13.4h, v21.4h
// CHECK-ERROR:                   ^

//----------------------------------------------------------------------
// Scalar Floating-point Convert To Signed Fixed-point (Immediate)
//----------------------------------------------------------------------

    fcvtzs s21, s12, #0
    fcvtzs d21, d12, #65
    fcvtzs s21, d12, #1

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:        fcvtzs s21, s12, #0
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:        fcvtzs d21, d12, #65
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtzs s21, d12, #1
// CHECK-ERROR:                    ^

//----------------------------------------------------------------------
// Scalar Floating-point Convert To Unsigned Fixed-point (Immediate)
//----------------------------------------------------------------------

    fcvtzu s21, s12, #33
    fcvtzu d21, d12, #0
    fcvtzu s21, d12, #1

// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR:        fcvtzu s21, s12, #33
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR:        fcvtzu d21, d12, #0
// CHECK-ERROR:                         ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtzu s21, d12, #1
// CHECK-ERROR:                    ^

//----------------------------------------------------------------------
// Scalar Unsigned Saturating Extract Narrow
//----------------------------------------------------------------------

        aese v0.8h, v1.8h
        aese v0.4s, v1.4s
        aese v0.2d, v1.2d
        aesd v0.8h, v1.8h
        aesmc v0.8h, v1.8h
        aesimc v0.8h, v1.8h

// CHECK:  error: invalid operand for instruction
// CHECK:         aese v0.8h, v1.8h
// CHECK:                 ^
// CHECK:  error: invalid operand for instruction
// CHECK:         aese v0.4s, v1.4s
// CHECK:                 ^
// CHECK:  error: invalid operand for instruction
// CHECK:         aese v0.2d, v1.2d
// CHECK:                 ^
// CHECK:  error: invalid operand for instruction
// CHECK:         aesd v0.8h, v1.8h
// CHECK:                 ^
// CHECK:  error: invalid operand for instruction
// CHECK:         aesmc v0.8h, v1.8h
// CHECK:                  ^
// CHECK:  error: invalid operand for instruction
// CHECK:         aesimc v0.8h, v1.8h
// CHECK:                   ^

        sha1h b0, b1
        sha1h h0, h1
        sha1h d0, d1
        sha1h q0, q1
        sha1su1 v0.16b, v1.16b
        sha1su1 v0.8h, v1.8h
        sha1su1 v0.2d, v1.2d
        sha256su0 v0.16b, v1.16b

// CHECK:  error: invalid operand for instruction
// CHECK:         sha1h b0, b1
// CHECK:               ^
// CHECK:  error: invalid operand for instruction
// CHECK:         sha1h h0, h1
// CHECK:               ^
// CHECK:  error: invalid operand for instruction
// CHECK:         sha1h d0, d1
// CHECK:               ^
// CHECK:  error: invalid operand for instruction
// CHECK:         sha1h q0, q1
// CHECK:               ^
// CHECK:  error: invalid operand for instruction
// CHECK:         sha1su1 v0.16b, v1.16b
// CHECK:                    ^
// CHECK:  error: invalid operand for instruction
// CHECK:         sha1su1 v0.8h, v1.8h
// CHECK:                    ^
// CHECK:  error: invalid operand for instruction
// CHECK:         sha1su1 v0.2d, v1.2d
// CHECK:                    ^
// CHECK:  error: invalid operand for instruction
// CHECK:         sha256su0 v0.16b, v1.16b
// CHECK:                      ^

        sha1c q0, q1, v2.4s
        sha1p q0, q1, v2.4s
        sha1m q0, q1, v2.4s
        sha1su0 v0.16b, v1.16b, v2.16b
        sha1su0 v0.8h, v1.8h, v2.8h
        sha1su0 v0.2d, v1.2d, v2.2d
        sha256h q0, q1, q2
        sha256h v0.4s, v1.4s, v2.4s
        sha256h2 q0, q1, q2
        sha256su1 v0.16b, v1.16b, v2.16b

// CHECK:  error: invalid operand for instruction
// CHECK:         sha1c q0, q1, v2.4s
// CHECK:                   ^
// CHECK:  error: invalid operand for instruction
// CHECK:         sha1p q0, q1, v2.4s
// CHECK:                   ^
// CHECK:  error: invalid operand for instruction
// CHECK:         sha1m q0, q1, v2.4s
// CHECK:                   ^
// CHECK:  error: invalid operand for instruction
// CHECK:         sha1su0 v0.16b, v1.16b, v2.16b
// CHECK:                    ^
// CHECK:  error: invalid operand for instruction
// CHECK:         sha1su0 v0.8h, v1.8h, v2.8h
// CHECK:                    ^
// CHECK:  error: invalid operand for instruction
// CHECK:         sha1su0 v0.2d, v1.2d, v2.2d
// CHECK:                    ^
// CHECK:  error: too few operands for instruction
// CHECK:         sha256h q0, q1, q2
// CHECK:         ^
// CHECK:  error: invalid operand for instruction
// CHECK:         sha256h v0.4s, v1.4s, v2.4s
// CHECK:                    ^
// CHECK:  error: too few operands for instruction
// CHECK:         sha256h2 q0, q1, q2
// CHECK:         ^
// CHECK:  error: invalid operand for instruction
// CHECK:         sha256su1 v0.16b, v1.16b, v2.16b
// CHECK:                      ^

//----------------------------------------------------------------------
// Bitwise extract
//----------------------------------------------------------------------

        ext v0.8b, v1.8b, v2.4h, #0x3
        ext v0.4h, v1.4h, v2.4h, #0x3
        ext v0.2s, v1.2s, v2.2s, #0x1
        ext v0.1d, v1.1d, v2.1d, #0x0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ext v0.8b, v1.8b, v2.4h, #0x3
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ext v0.4h, v1.4h, v2.4h, #0x3
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ext v0.2s, v1.2s, v2.2s, #0x1
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ext v0.1d, v1.1d, v2.1d, #0x0
// CHECK-ERROR:                ^

        ext v0.16b, v1.16b, v2.8h, #0x3
        ext v0.8h, v1.8h, v2.8h, #0x3
        ext v0.4s, v1.4s, v2.4s, #0x1
        ext v0.2d, v1.2d, v2.2d, #0x0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ext v0.16b, v1.16b, v2.8h, #0x3
// CHECK-ERROR:                                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ext v0.8h, v1.8h, v2.8h, #0x3
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ext v0.4s, v1.4s, v2.4s, #0x1
// CHECK-ERROR:                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:         ext v0.2d, v1.2d, v2.2d, #0x0
// CHECK-ERROR:                ^


//----------------------------------------------------------------------
// Permutation with 3 vectors
//----------------------------------------------------------------------

        uzp1 v0.16b, v1.8b, v2.8b
// CHECK-ERROR: [[@LINE-1]]:22: error: invalid operand for instruction
        uzp1 v0.8b, v1.4b, v2.4b
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp1 v0.8h, v1.4h, v2.4h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp1 v0.4h, v1.2h, v2.2h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp1 v0.4s, v1.2s, v2.2s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp1 v0.2s, v1.1s, v2.1s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid vector kind qualifier
// CHECK-ERROR: [[@LINE-2]]:28: error: invalid vector kind qualifier
        uzp1 v0.2d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp1 v0.1d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:14: error: invalid operand for instruction



        uzp2 v0.16b, v1.8b, v2.8b
// CHECK-ERROR: [[@LINE-1]]:22: error: invalid operand for instruction
        uzp2 v0.8b, v1.4b, v2.4b
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp2 v0.8h, v1.4h, v2.4h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp2 v0.4h, v1.2h, v2.2h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp2 v0.4s, v1.2s, v2.2s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp2 v0.2s, v1.1s, v2.1s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid vector kind qualifier
// CHECK-ERROR: [[@LINE-2]]:28: error: invalid vector kind qualifier
        uzp2 v0.2d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp2 v0.1d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:14: error: invalid operand for instruction



        zip1 v0.16b, v1.8b, v2.8b
// CHECK-ERROR: [[@LINE-1]]:22: error: invalid operand for instruction
        zip1 v0.8b, v1.4b, v2.4b
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip1 v0.8h, v1.4h, v2.4h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip1 v0.4h, v1.2h, v2.2h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip1 v0.4s, v1.2s, v2.2s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip1 v0.2s, v1.1s, v2.1s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid vector kind qualifier
// CHECK-ERROR: [[@LINE-2]]:28: error: invalid vector kind qualifier
        zip1 v0.2d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip1 v0.1d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:14: error: invalid operand for instruction



        zip2 v0.16b, v1.8b, v2.8b
// CHECK-ERROR: [[@LINE-1]]:22: error: invalid operand for instruction
        zip2 v0.8b, v1.4b, v2.4b
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip2 v0.8h, v1.4h, v2.4h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip2 v0.4h, v1.2h, v2.2h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip2 v0.4s, v1.2s, v2.2s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip2 v0.2s, v1.1s, v2.1s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid vector kind qualifier
// CHECK-ERROR: [[@LINE-2]]:28: error: invalid vector kind qualifier
        zip2 v0.2d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip2 v0.1d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:14: error: invalid operand for instruction



        trn1 v0.16b, v1.8b, v2.8b
// CHECK-ERROR: [[@LINE-1]]:22: error: invalid operand for instruction
        trn1 v0.8b, v1.4b, v2.4b
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn1 v0.8h, v1.4h, v2.4h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn1 v0.4h, v1.2h, v2.2h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn1 v0.4s, v1.2s, v2.2s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn1 v0.2s, v1.1s, v2.1s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid vector kind qualifier
// CHECK-ERROR: [[@LINE-2]]:28: error: invalid vector kind qualifier
        trn1 v0.2d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn1 v0.1d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:14: error: invalid operand for instruction



        trn2 v0.16b, v1.8b, v2.8b
// CHECK-ERROR: [[@LINE-1]]:22: error: invalid operand for instruction
        trn2 v0.8b, v1.4b, v2.4b
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn2 v0.8h, v1.4h, v2.4h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn2 v0.4h, v1.2h, v2.2h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn2 v0.4s, v1.2s, v2.2s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn2 v0.2s, v1.1s, v2.1s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid vector kind qualifier
// CHECK-ERROR: [[@LINE-2]]:28: error: invalid vector kind qualifier
        trn2 v0.2d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn2 v0.1d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:14: error: invalid operand for instruction

//----------------------------------------------------------------------
// Permutation with 3 vectors
//----------------------------------------------------------------------

        uzp1 v0.16b, v1.8b, v2.8b
// CHECK-ERROR: [[@LINE-1]]:22: error: invalid operand for instruction
        uzp1 v0.8b, v1.4b, v2.4b
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp1 v0.8h, v1.4h, v2.4h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp1 v0.4h, v1.2h, v2.2h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp1 v0.4s, v1.2s, v2.2s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp1 v0.2s, v1.1s, v2.1s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid vector kind qualifier
// CHECK-ERROR: [[@LINE-2]]:28: error: invalid vector kind qualifier
        uzp1 v0.2d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp1 v0.1d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:14: error: invalid operand for instruction

        uzp2 v0.16b, v1.8b, v2.8b
// CHECK-ERROR: [[@LINE-1]]:22: error: invalid operand for instruction
        uzp2 v0.8b, v1.4b, v2.4b
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp2 v0.8h, v1.4h, v2.4h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp2 v0.4h, v1.2h, v2.2h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp2 v0.4s, v1.2s, v2.2s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp2 v0.2s, v1.1s, v2.1s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid vector kind qualifier
// CHECK-ERROR: [[@LINE-2]]:28: error: invalid vector kind qualifier
        uzp2 v0.2d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        uzp2 v0.1d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:14: error: invalid operand for instruction

        zip1 v0.16b, v1.8b, v2.8b
// CHECK-ERROR: [[@LINE-1]]:22: error: invalid operand for instruction
        zip1 v0.8b, v1.4b, v2.4b
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip1 v0.8h, v1.4h, v2.4h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip1 v0.4h, v1.2h, v2.2h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip1 v0.4s, v1.2s, v2.2s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip1 v0.2s, v1.1s, v2.1s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid vector kind qualifier
// CHECK-ERROR: [[@LINE-2]]:28: error: invalid vector kind qualifier
        zip1 v0.2d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip1 v0.1d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:14: error: invalid operand for instruction





        zip2 v0.16b, v1.8b, v2.8b
// CHECK-ERROR: [[@LINE-1]]:22: error: invalid operand for instruction
        zip2 v0.8b, v1.4b, v2.4b
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip2 v0.8h, v1.4h, v2.4h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip2 v0.4h, v1.2h, v2.2h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip2 v0.4s, v1.2s, v2.2s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip2 v0.2s, v1.1s, v2.1s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid vector kind qualifier
// CHECK-ERROR: [[@LINE-2]]:28: error: invalid vector kind qualifier
        zip2 v0.2d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        zip2 v0.1d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:14: error: invalid operand for instruction




        trn1 v0.16b, v1.8b, v2.8b
// CHECK-ERROR: [[@LINE-1]]:22: error: invalid operand for instruction
        trn1 v0.8b, v1.4b, v2.4b
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn1 v0.8h, v1.4h, v2.4h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn1 v0.4h, v1.2h, v2.2h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn1 v0.4s, v1.2s, v2.2s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn1 v0.2s, v1.1s, v2.1s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid vector kind qualifier
// CHECK-ERROR: [[@LINE-2]]:28: error: invalid vector kind qualifier
        trn1 v0.2d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn1 v0.1d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:14: error: invalid operand for instruction



        trn2 v0.16b, v1.8b, v2.8b
// CHECK-ERROR: [[@LINE-1]]:22: error: invalid operand for instruction
        trn2 v0.8b, v1.4b, v2.4b
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn2 v0.8h, v1.4h, v2.4h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn2 v0.4h, v1.2h, v2.2h
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn2 v0.4s, v1.2s, v2.2s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn2 v0.2s, v1.1s, v2.1s
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid vector kind qualifier
// CHECK-ERROR: [[@LINE-2]]:28: error: invalid vector kind qualifier
        trn2 v0.2d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:21: error: invalid operand for instruction
        trn2 v0.1d, v1.1d, v2.1d
// CHECK-ERROR: [[@LINE-1]]:14: error: invalid operand for instruction



//----------------------------------------------------------------------
// Floating Point  multiply (scalar, by element)
//----------------------------------------------------------------------
      // mismatched and invalid vector types
      fmul    s0, s1, v1.h[0]
      fmul    h0, h1, v1.s[0]
      // invalid lane
      fmul    s2, s29, v10.s[4]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fmul    s0, s1, v1.h[0]
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fmul    h0, h1, v1.s[0]
// CHECK-ERROR:                  ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:          fmul    s2, s29, v10.s[4]
// CHECK-ERROR:                                 ^

//----------------------------------------------------------------------
// Floating Point  multiply extended (scalar, by element)
//----------------------------------------------------------------------
      // mismatched and invalid vector types
      fmulx    d0, d1, v1.b[0]
      fmulx    h0, h1, v1.d[0]
      // invalid lane
      fmulx    d2, d29, v10.d[3]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fmulx    d0, d1, v1.b[0]
// CHECK-ERROR:                              ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fmulx    h0, h1, v1.d[0]
// CHECK-ERROR:                   ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:          fmulx    d2, d29, v10.d[3]
// CHECK-ERROR:                                  ^

//----------------------------------------------------------------------
// Floating Point fused multiply-add (scalar, by element)
//----------------------------------------------------------------------
      // mismatched and invalid vector types
      fmla    b0, b1, v1.b[0]
      fmla    d30, s11, v1.d[1]
      // invalid lane
      fmla    s16, s22, v16.s[5]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fmla    b0, b1, v1.b[0]
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fmla    d30, s11, v1.d[1]
// CHECK-ERROR:                       ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:          fmla    s16, s22, v16.s[5]
// CHECK-ERROR:                                  ^

//----------------------------------------------------------------------
// Floating Point fused multiply-subtract (scalar, by element)
//----------------------------------------------------------------------
    // mismatched and invalid vector types
    fmls    s29, h10, v28.s[1]
    fmls    h7, h17, v26.s[2]
    // invalid lane
    fmls    d16, d22, v16.d[-1]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fmls    s29, h10, v28.s[1]
// CHECK-ERROR:                       ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          fmls    h7, h17, v26.s[2]
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: vector lane must be an integer in range [0, 1]
// CHECK-ERROR:          fmls    d16, d22, v16.d[-1]
// CHECK-ERROR:                                  ^

//----------------------------------------------------------------------
// Scalar Signed saturating doubling multiply-add long
// (scalar, by element)
//----------------------------------------------------------------------
    // mismatched and invalid vector types
    sqdmlal s0, h0, v0.s[0]
    sqdmlal s8, s9, v14.s[1]
    // invalid lane
    sqdmlal d4, s5, v1.s[5]
    // invalid vector index
    sqdmlal s0, h0, v17.h[0]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          sqdmlal s0, h0, v0.s[0]
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          sqdmlal s8, s9, v14.s[1]
// CHECK-ERROR:                  ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:          sqdmlal d4, s5, v1.s[5]
// CHECK-ERROR:                               ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          sqdmlal s0, h0, v17.h[0]
// CHECK-ERROR:                           ^

//----------------------------------------------------------------------
// Scalar Signed saturating doubling multiply-subtract long
// (scalar, by element)
//----------------------------------------------------------------------
    // mismatched and invalid vector types
    sqdmlsl s1, h1, v1.d[0]
    sqdmlsl d1, h1, v13.s[0]
    // invalid lane
    sqdmlsl d1, s1, v13.s[4]
    // invalid vector index
    sqdmlsl s1, h1, v20.h[7]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          sqdmlsl s1, h1, v1.d[0]
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          sqdmlsl d1, h1, v13.s[0]
// CHECK-ERROR:                      ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:          sqdmlsl d1, s1, v13.s[4]
// CHECK-ERROR:                                ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          sqdmlsl s1, h1, v20.h[7]
// CHECK-ERROR:                           ^

//----------------------------------------------------------------------
// Scalar Signed saturating doubling multiply long (scalar, by element)
//----------------------------------------------------------------------
    // mismatched and invalid vector types
    // invalid lane
    // invalid vector index
    // mismatched and invalid vector types
    sqdmull s1, h1, v1.s[1]
    sqdmull s1, s1, v4.s[0]
    // invalid lane
    sqdmull s12, h17, v9.h[9]
    // invalid vector index
    sqdmull s1, h1, v16.h[5]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          sqdmull s1, h1, v1.s[1]
// CHECK-ERROR:                             ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          sqdmull s1, s1, v4.s[0]
// CHECK-ERROR:                  ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:          sqdmull s12, h17, v9.h[9]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          sqdmull s1, h1, v16.h[5]
// CHECK-ERROR:                           ^

//----------------------------------------------------------------------
// Scalar Signed saturating doubling multiply returning
// high half (scalar, by element)
//----------------------------------------------------------------------
    // mismatched and invalid vector types
    sqdmulh h0, s1, v0.h[0]
    sqdmulh s25, s26, v27.h[3]
    // invalid lane
    sqdmulh s25, s26, v27.s[4]
    // invalid vector index
    sqdmulh s0, h1, v30.h[0]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          sqdmulh h0, s1, v0.h[0]
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          sqdmulh s25, s26, v27.h[3]
// CHECK-ERROR:                  ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:          sqdmulh s25, s26, v27.s[4]
// CHECK-ERROR:                                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          sqdmulh s0, h1, v30.h[0]
// CHECK-ERROR:                      ^

//----------------------------------------------------------------------
// Scalar Signed saturating rounding doubling multiply
// returning high half (scalar, by element)
//----------------------------------------------------------------------
    // mismatched and invalid vector types
    sqrdmulh h31, h30, v14.s[2]
    sqrdmulh s5, h6, v7.s[2]
    // invalid lane
    sqrdmulh h31, h30, v14.h[9]
    // invalid vector index
    sqrdmulh h31, h30, v20.h[4]

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          sqrdmulh h31, h30, v14.s[2]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          sqrdmulh s5, h6, v7.s[2]
// CHECK-ERROR:                       ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:          sqrdmulh h31, h30, v14.h[9]
// CHECK-ERROR:                                 ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          sqrdmulh h31, h30, v20.h[4]
// CHECK-ERROR:                              ^

//----------------------------------------------------------------------
// Scalar Duplicate element (scalar)
//----------------------------------------------------------------------
      // mismatched and invalid vector types
      dup b0, v1.d[0]
      dup h0, v31.b[8]
      dup s0, v2.h[4]
      dup d0, v17.s[3]
      // invalid  lane
      dup d0, v17.d[4]
      dup s0, v1.s[7]
      dup h0, v31.h[16]
      dup b1, v3.b[16]
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          dup b0, v1.d[0]
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          dup h0, v31.b[8]
// CHECK-ERROR:                      ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          dup s0, v2.h[4]
// CHECK-ERROR:                     ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:          dup d0, v17.s[3]
// CHECK-ERROR:                      ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:          dup d0, v17.d[4]
// CHECK-ERROR:                        ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:          dup s0, v1.s[7]
// CHECK-ERROR:                       ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:          dup h0, v31.h[16]
// CHECK-ERROR:                        ^
// CHECK-ERROR: vector lane must be an integer in range
// CHECK-ERROR:          dup b1, v3.b[16]
// CHECK-ERROR:                       ^

//----------------------------------------------------------------------
// Table look up
//----------------------------------------------------------------------

        tbl v0.8b, {v1.8b}, v2.8b
        tbl v0.8b, {v1.8b, v2.8b}, v2.8b
        tbl v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
        tbl v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
        tbl v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        tbl v0.8b, {v1.8b}, v2.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        tbl v0.8b, {v1.8b, v2.8b}, v2.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        tbl v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        tbl v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid number of vectors
// CHECK-ERROR:        tbl v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
// CHECK-ERROR:                                                    ^

        tbx v0.8b, {v1.8b}, v2.8b
        tbx v0.8b, {v1.8b, v2.8b}, v2.8b
        tbx v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
        tbx v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
        tbx v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        tbx v0.8b, {v1.8b}, v2.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        tbx v0.8b, {v1.8b, v2.8b}, v2.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        tbx v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        tbx v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid number of vectors
// CHECK-ERROR:        tbx v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
// CHECK-ERROR:                                                    ^

//----------------------------------------------------------------------
// Scalar Floating-point Convert To Lower Precision Narrow, Rounding To
// Odd
//----------------------------------------------------------------------

    fcvtxn s0, s1

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtxn s0, s1
// CHECK-ERROR:                   ^

//----------------------------------------------------------------------
// Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
// With Ties To Away
//----------------------------------------------------------------------

    fcvtas s0, d0
    fcvtas d0, s0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtas s0, d0
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtas d0, s0
// CHECK-ERROR:                   ^

//----------------------------------------------------------------------
// Scalar Floating-point Convert To Unsigned Integer, Rounding To
// Nearest With Ties To Away
//----------------------------------------------------------------------

    fcvtau s0, d0
    fcvtau d0, s0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtau s0, d0
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtau d0, s0
// CHECK-ERROR:                   ^

//----------------------------------------------------------------------
// Scalar Floating-point Convert To Signed Integer, Rounding Toward
// Minus Infinity
//----------------------------------------------------------------------

    fcvtms s0, d0
    fcvtms d0, s0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtms s0, d0
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtms d0, s0
// CHECK-ERROR:                   ^

//----------------------------------------------------------------------
// Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
// Minus Infinity
//----------------------------------------------------------------------

    fcvtmu s0, d0
    fcvtmu d0, s0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtmu s0, d0
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtmu d0, s0
// CHECK-ERROR:                   ^

//----------------------------------------------------------------------
// Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
// With Ties To Even
//----------------------------------------------------------------------

    fcvtns s0, d0
    fcvtns d0, s0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtns s0, d0
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtns d0, s0
// CHECK-ERROR:                   ^

//----------------------------------------------------------------------
// Scalar Floating-point Convert To Unsigned Integer, Rounding To
// Nearest With Ties To Even
//----------------------------------------------------------------------

    fcvtnu s0, d0
    fcvtnu d0, s0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtnu s0, d0
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtnu d0, s0
// CHECK-ERROR:                   ^

//----------------------------------------------------------------------
// Scalar Floating-point Convert To Signed Integer, Rounding Toward
// Positive Infinity
//----------------------------------------------------------------------

    fcvtps s0, d0
    fcvtps d0, s0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtps s0, d0
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtps d0, s0
// CHECK-ERROR:                   ^

//----------------------------------------------------------------------
// Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
// Positive Infinity
//----------------------------------------------------------------------

    fcvtpu s0, d0
    fcvtpu d0, s0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtpu s0, d0
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtpu d0, s0
// CHECK-ERROR:                   ^

//----------------------------------------------------------------------
// Scalar Floating-point Convert To Signed Integer, Rounding Toward Zero
//----------------------------------------------------------------------

    fcvtzs s0, d0
    fcvtzs d0, s0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtzs s0, d0
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtzs d0, s0
// CHECK-ERROR:                   ^

//----------------------------------------------------------------------
// Scalar Floating-point Convert To Unsigned Integer, Rounding Toward 
// Zero
//----------------------------------------------------------------------

    fcvtzu s0, d0
    fcvtzu d0, s0

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtzu s0, d0
// CHECK-ERROR:                   ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fcvtzu d0, s0
// CHECK-ERROR:                   ^

//----------------------------------------------------------------------
// Scalar Floating-point Absolute Difference
//----------------------------------------------------------------------


    fabd s29, d24, s20
    fabd d29, s24, d20

// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fabd s29, d24, s20
// CHECK-ERROR:                  ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR:        fabd d29, s24, d20
// CHECK-ERROR:                  ^
