7104 lines
288 KiB
ArmAsm
7104 lines
288 KiB
ArmAsm
// 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: ^
|