// RUN: not llvm-mc -triple aarch64-none-linux-gnu < %s 2> %t
// RUN: FileCheck --check-prefix=CHECK-ERROR --check-prefix=CHECK-ERROR-ARM64 < %t %s
//------------------------------------------------------------------------------
// Add/sub (extended register)
//------------------------------------------------------------------------------
// Mismatched final register and extend
add x2, x3, x5, sxtb
add x2, x4, w2, uxtx
add x2, x4, w2, lsl add w5, w7, x9, sxtx
// CHECK-ERROR: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR: add x2, x3, x5, sxtb
// CHECK-ERROR: ^
// CHECK-ERROR: error: expected '[su]xt[bhw]' with optional integer in range [0, 4]
// CHECK-ERROR: add x2, x4, w2, uxtx
// CHECK-ERROR: ^
// CHECK-ERROR: error: expected '[su]xt[bhw]' with optional integer in range [0, 4]
// CHECK-ERROR: add x2, x4, w2, lsl // CHECK-ERROR: ^
// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
// CHECK-ERROR: add w5, w7, x9, sxtx
// CHECK-ERROR: ^
// Out of range extends
add x9, x10, w11, uxtb add x3, x5, w7, uxtb sub x9, x15, x2, uxth // CHECK-ERROR: error: expected integer shift amount
// CHECK-ERROR: add x9, x10, w11, uxtb // CHECK-ERROR: ^
// CHECK-ERROR: error: expected '[su]xt[bhw]' with optional integer in range [0, 4]
// CHECK-ERROR: add x3, x5, w7, uxtb // CHECK-ERROR: ^
// CHECK-ERROR: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR: sub x9, x15, x2, uxth // CHECK-ERROR: ^
// Wrong registers on normal variants
add xzr, x3, x5, uxtx
sub x3, xzr, w9, sxth add x1, x2, sp, uxtx
// CHECK-ERROR: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
// CHECK-ERROR: add xzr, x3, x5, uxtx
// CHECK-ERROR: ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR: sub x3, xzr, w9, sxth // CHECK-ERROR: ^
// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
// CHECK-ERROR: add x1, x2, sp, uxtx
// CHECK-ERROR: ^
// Wrong registers on flag-setting variants
adds sp, x3, w2, uxtb
adds x3, xzr, x9, uxtx
subs x2, x1, sp, uxtx
adds x2, x1, sp, uxtb // CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR: adds sp, x3, w2, uxtb
// CHECK-ERROR: ^
// CHECK-ERROR: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
// CHECK-ERROR: adds x3, xzr, x9, uxtx
// CHECK-ERROR: ^
// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
// CHECK-ERROR: subs x2, x1, sp, uxtx
// CHECK-ERROR: ^
// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
// CHECK-ERROR: adds x2, x1, sp, uxtb // CHECK-ERROR: ^
// Amount not optional if lsl valid and used
add sp, x5, x7, lsl
// CHECK-ERROR: error: expected // CHECK-ERROR: add sp, x5, x7, lsl
// CHECK-ERROR: ^
//------------------------------------------------------------------------------
// Add/sub (immediate)
//------------------------------------------------------------------------------
// Out of range immediates: more than 12 bits
add w4, w5, add w5, w6, add w4, w5, add w5, w6, // CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
// CHECK-ERROR-NEXT: add w4, w5, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-AARCH64-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
// CHECK-ERROR-AARCH64-NEXT: add w5, w6, // CHECK-ERROR-AARCH64-NEXT: ^
// CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
// CHECK-ERROR-NEXT: add w4, w5, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
// CHECK-ERROR-NEXT: add w5, w6, // CHECK-ERROR-NEXT: ^
// Only lsl add w2, w3, add w5, w17, add w17, w20, sub xsp, x34, // CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
// CHECK-ERROR-NEXT: add w2, w3, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
// CHECK-ERROR-NEXT: add w5, w17, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
// CHECK-ERROR-NEXT: add w17, w20, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: only 'lsl #+N' valid after immediate
// CHECK-ERROR-NEXT: sub xsp, x34, // CHECK-ERROR-NEXT: ^
// Incorrect registers (w31 doesn't exist at all, and 31 decodes to sp for these).
add w31, w20, #1234
add wzr, w20, #0x123
add w20, wzr, #0x321
add wzr, wzr, #0xfff
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: add w31, w20, #1234
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: add wzr, w20, #0x123
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: add w20, wzr, #0x321
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: add wzr, wzr, #0xfff
// CHECK-ERROR-NEXT: ^
// Mixed register classes
add xsp, w2, #123
sub w2, x30, #32
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: add xsp, w2, #123
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sub w2, x30, #32
// CHECK-ERROR-NEXT: ^
// Out of range immediate
adds w0, w5, #0x10000
// CHECK-ERROR-AARCH64: error: expected compatible register, symbol or integer in range [0, 4095]
// CHECK-ERROR-AARCH64-NEXT: adds w0, w5, #0x10000
// CHECK-ERROR-AARCH64-NEXT: ^
// Wn|WSP should be in second place
adds w4, wzr, #0x123
// ...but wzr is the 31 destination
subs wsp, w5, #123
subs x5, xzr, #0x456, lsl #12
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: adds w4, wzr, #0x123
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: subs wsp, w5, #123
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: subs x5, xzr, #0x456, lsl #12
// CHECK-ERROR-NEXT: ^
// MOV alias should not accept any fiddling
mov x2, xsp, #123
mov wsp, w27, #0xfff, lsl #12
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: mov x2, xsp, #123
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: mov wsp, w27, #0xfff, lsl #12
// CHECK-ERROR-NEXT: ^
// A relocation should be provided for symbols
add x3, x9, #variable
add x3, x9, #variable-16
// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
// CHECK-ERROR-NEXT: add x3, x9, #variable
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
// CHECK-ERROR-NEXT: add x3, x9, #variable-16
// CHECK-ERROR-NEXT: ^
// Relocation on a sub
sub x1, x0, :lo12:loc
// CHECK-ERROR: error: invalid immediate expression
// CHECK-ERROR: sub x1, x0, :lo12:loc
// CHECK-ERROR: ^
//------------------------------------------------------------------------------
// Add-subtract (shifted register)
//------------------------------------------------------------------------------
add wsp, w1, w2, lsr #3
add x4, sp, x9, asr #5
add x9, x10, x5, ror #3
// CHECK-ERROR: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: add wsp, w1, w2, lsr #3
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: add x4, sp, x9, asr #5
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: add x9, x10, x5, ror #3
// CHECK-ERROR-NEXT: ^
add w1, w2, w3, lsl #-1
add w1, w2, w3, lsl #32
add w1, w2, w3, lsr #-1
add w1, w2, w3, lsr #32
add w1, w2, w3, asr #-1
add w1, w2, w3, asr #32
add x1, x2, x3, lsl #-1
add x1, x2, x3, lsl #64
add x1, x2, x3, lsr #-1
add x1, x2, x3, lsr #64
add x1, x2, x3, asr #-1
add x1, x2, x3, asr #64
// CHECK-ERROR: error: expected integer shift amount
// CHECK-ERROR-NEXT: add w1, w2, w3, lsl #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: add w1, w2, w3, lsl #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: add w1, w2, w3, lsr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: add w1, w2, w3, lsr #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: add w1, w2, w3, asr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: add w1, w2, w3, asr #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: add x1, x2, x3, lsl #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: add x1, x2, x3, lsl #64
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: add x1, x2, x3, lsr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: add x1, x2, x3, lsr #64
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: add x1, x2, x3, asr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: add x1, x2, x3, asr #64
// CHECK-ERROR-NEXT: ^
adds w1, w2, w3, lsl #-1
adds w1, w2, w3, lsl #32
adds w1, w2, w3, lsr #-1
adds w1, w2, w3, lsr #32
adds w1, w2, w3, asr #-1
adds w1, w2, w3, asr #32
adds x1, x2, x3, lsl #-1
adds x1, x2, x3, lsl #64
adds x1, x2, x3, lsr #-1
adds x1, x2, x3, lsr #64
adds x1, x2, x3, asr #-1
adds x1, x2, x3, asr #64
// CHECK-ERROR: error: expected integer shift amount
// CHECK-ERROR-NEXT: adds w1, w2, w3, lsl #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: adds w1, w2, w3, lsl #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: adds w1, w2, w3, lsr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: adds w1, w2, w3, lsr #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: adds w1, w2, w3, asr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: adds w1, w2, w3, asr #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: adds x1, x2, x3, lsl #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: adds x1, x2, x3, lsl #64
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: adds x1, x2, x3, lsr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: adds x1, x2, x3, lsr #64
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: adds x1, x2, x3, asr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: adds x1, x2, x3, asr #64
// CHECK-ERROR-NEXT: ^
sub w1, w2, w3, lsl #-1
sub w1, w2, w3, lsl #32
sub w1, w2, w3, lsr #-1
sub w1, w2, w3, lsr #32
sub w1, w2, w3, asr #-1
sub w1, w2, w3, asr #32
sub x1, x2, x3, lsl #-1
sub x1, x2, x3, lsl #64
sub x1, x2, x3, lsr #-1
sub x1, x2, x3, lsr #64
sub x1, x2, x3, asr #-1
sub x1, x2, x3, asr #64
// CHECK-ERROR: error: expected integer shift amount
// CHECK-ERROR-NEXT: sub w1, w2, w3, lsl #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: sub w1, w2, w3, lsl #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: sub w1, w2, w3, lsr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: sub w1, w2, w3, lsr #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: sub w1, w2, w3, asr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: sub w1, w2, w3, asr #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: sub x1, x2, x3, lsl #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: sub x1, x2, x3, lsl #64
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: sub x1, x2, x3, lsr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: sub x1, x2, x3, lsr #64
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: sub x1, x2, x3, asr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: sub x1, x2, x3, asr #64
// CHECK-ERROR-NEXT: ^
subs w1, w2, w3, lsl #-1
subs w1, w2, w3, lsl #32
subs w1, w2, w3, lsr #-1
subs w1, w2, w3, lsr #32
subs w1, w2, w3, asr #-1
subs w1, w2, w3, asr #32
subs x1, x2, x3, lsl #-1
subs x1, x2, x3, lsl #64
subs x1, x2, x3, lsr #-1
subs x1, x2, x3, lsr #64
subs x1, x2, x3, asr #-1
subs x1, x2, x3, asr #64
// CHECK-ERROR: error: expected integer shift amount
// CHECK-ERROR-NEXT: subs w1, w2, w3, lsl #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: subs w1, w2, w3, lsl #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: subs w1, w2, w3, lsr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: subs w1, w2, w3, lsr #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: subs w1, w2, w3, asr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: subs w1, w2, w3, asr #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: subs x1, x2, x3, lsl #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: subs x1, x2, x3, lsl #64
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: subs x1, x2, x3, lsr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: subs x1, x2, x3, lsr #64
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: subs x1, x2, x3, asr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: subs x1, x2, x3, asr #64
// CHECK-ERROR-NEXT: ^
cmn w9, w10, lsl #-1
cmn w9, w10, lsl #32
cmn w11, w12, lsr #-1
cmn w11, w12, lsr #32
cmn w19, wzr, asr #-1
cmn wzr, wzr, asr #32
cmn x9, x10, lsl #-1
cmn x9, x10, lsl #64
cmn x11, x12, lsr #-1
cmn x11, x12, lsr #64
cmn x19, xzr, asr #-1
cmn xzr, xzr, asr #64
// CHECK-ERROR: error: expected integer shift amount
// CHECK-ERROR-NEXT: cmn w9, w10, lsl #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: cmn w9, w10, lsl #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: cmn w11, w12, lsr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: cmn w11, w12, lsr #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: cmn w19, wzr, asr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
// CHECK-ERROR-NEXT: cmn wzr, wzr, asr #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: cmn x9, x10, lsl #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: cmn x9, x10, lsl #64
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: cmn x11, x12, lsr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: cmn x11, x12, lsr #64
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: cmn x19, xzr, asr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
// CHECK-ERROR-NEXT: cmn xzr, xzr, asr #64
// CHECK-ERROR-NEXT: ^
cmp w9, w10, lsl #-1
cmp w9, w10, lsl #32
cmp w11, w12, lsr #-1
cmp w11, w12, lsr #32
cmp w19, wzr, asr #-1
cmp wzr, wzr, asr #32
cmp x9, x10, lsl #-1
cmp x9, x10, lsl #64
cmp x11, x12, lsr #-1
cmp x11, x12, lsr #64
cmp x19, xzr, asr #-1
cmp xzr, xzr, asr #64
// CHECK-ERROR: error: expected integer shift amount
// CHECK-ERROR-NEXT: cmp w9, w10, lsl #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: cmp w9, w10, lsl #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: cmp w11, w12, lsr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: cmp w11, w12, lsr #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: cmp w19, wzr, asr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
// CHECK-ERROR-NEXT: cmp wzr, wzr, asr #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: cmp x9, x10, lsl #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: cmp x9, x10, lsl #64
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: cmp x11, x12, lsr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
// CHECK-ERROR-NEXT: cmp x11, x12, lsr #64
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: cmp x19, xzr, asr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
// CHECK-ERROR-NEXT: cmp xzr, xzr, asr #64
// CHECK-ERROR-NEXT: ^
neg w9, w10, lsl #-1
neg w9, w10, lsl #32
neg w11, w12, lsr #-1
neg w11, w12, lsr #32
neg w19, wzr, asr #-1
neg wzr, wzr, asr #32
neg x9, x10, lsl #-1
neg x9, x10, lsl #64
neg x11, x12, lsr #-1
neg x11, x12, lsr #64
neg x19, xzr, asr #-1
neg xzr, xzr, asr #64
// CHECK-ERROR: error: expected integer shift amount
// CHECK-ERROR-NEXT: neg w9, w10, lsl #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
// CHECK-ERROR-NEXT: neg w9, w10, lsl #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: neg w11, w12, lsr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
// CHECK-ERROR-NEXT: neg w11, w12, lsr #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: neg w19, wzr, asr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
// CHECK-ERROR-NEXT: neg wzr, wzr, asr #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: neg x9, x10, lsl #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
// CHECK-ERROR-NEXT: neg x9, x10, lsl #64
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: neg x11, x12, lsr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
// CHECK-ERROR-NEXT: neg x11, x12, lsr #64
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: neg x19, xzr, asr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
// CHECK-ERROR-NEXT: neg xzr, xzr, asr #64
// CHECK-ERROR-NEXT: ^
negs w9, w10, lsl #-1
negs w9, w10, lsl #32
negs w11, w12, lsr #-1
negs w11, w12, lsr #32
negs w19, wzr, asr #-1
negs wzr, wzr, asr #32
negs x9, x10, lsl #-1
negs x9, x10, lsl #64
negs x11, x12, lsr #-1
negs x11, x12, lsr #64
negs x19, xzr, asr #-1
negs xzr, xzr, asr #64
// CHECK-ERROR: error: expected integer shift amount
// CHECK-ERROR-NEXT: negs w9, w10, lsl #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
// CHECK-ERROR-NEXT: negs w9, w10, lsl #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: negs w11, w12, lsr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
// CHECK-ERROR-NEXT: negs w11, w12, lsr #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: negs w19, wzr, asr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
// CHECK-ERROR-NEXT: negs wzr, wzr, asr #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: negs x9, x10, lsl #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
// CHECK-ERROR-NEXT: negs x9, x10, lsl #64
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: negs x11, x12, lsr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
// CHECK-ERROR-NEXT: negs x11, x12, lsr #64
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: negs x19, xzr, asr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]
// CHECK-ERROR-NEXT: negs xzr, xzr, asr #64
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Add-subtract (shifted register)
//------------------------------------------------------------------------------
adc wsp, w3, w5
adc w1, wsp, w2
adc w0, w10, wsp
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: adc wsp, w3, w5
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: adc w1, wsp, w2
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: adc w0, w10, wsp
// CHECK-ERROR-NEXT: ^
adc sp, x3, x5
adc x1, sp, x2
adc x0, x10, sp
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: adc sp, x3, x5
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: adc x1, sp, x2
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: adc x0, x10, sp
// CHECK-ERROR-NEXT: ^
adcs wsp, w3, w5
adcs w1, wsp, w2
adcs w0, w10, wsp
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: adcs wsp, w3, w5
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: adcs w1, wsp, w2
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: adcs w0, w10, wsp
// CHECK-ERROR-NEXT: ^
adcs sp, x3, x5
adcs x1, sp, x2
adcs x0, x10, sp
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: adcs sp, x3, x5
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: adcs x1, sp, x2
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: adcs x0, x10, sp
// CHECK-ERROR-NEXT: ^
sbc wsp, w3, w5
sbc w1, wsp, w2
sbc w0, w10, wsp
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbc wsp, w3, w5
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbc w1, wsp, w2
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbc w0, w10, wsp
// CHECK-ERROR-NEXT: ^
sbc sp, x3, x5
sbc x1, sp, x2
sbc x0, x10, sp
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbc sp, x3, x5
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbc x1, sp, x2
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbc x0, x10, sp
// CHECK-ERROR-NEXT: ^
sbcs wsp, w3, w5
sbcs w1, wsp, w2
sbcs w0, w10, wsp
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbcs wsp, w3, w5
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbcs w1, wsp, w2
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbcs w0, w10, wsp
// CHECK-ERROR-NEXT: ^
sbcs sp, x3, x5
sbcs x1, sp, x2
sbcs x0, x10, sp
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbcs sp, x3, x5
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbcs x1, sp, x2
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbcs x0, x10, sp
// CHECK-ERROR-NEXT: ^
ngc wsp, w3
ngc w9, wsp
ngc sp, x9
ngc x2, sp
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ngc wsp, w3
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ngc w9, wsp
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ngc sp, x9
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ngc x2, sp
// CHECK-ERROR-NEXT: ^
ngcs wsp, w3
ngcs w9, wsp
ngcs sp, x9
ngcs x2, sp
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ngcs wsp, w3
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ngcs w9, wsp
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ngcs sp, x9
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ngcs x2, sp
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Logical (immediates)
//------------------------------------------------------------------------------
and w2, w3, #4294967296
eor w2, w3, #4294967296
orr w2, w3, #4294967296
ands w2, w3, #4294967296
// CHECK-ERROR: error: expected compatible register or logical immediate
// CHECK-ERROR-NEXT: and w2, w3, #4294967296
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
// CHECK-ERROR-NEXT: eor w2, w3, #4294967296
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
// CHECK-ERROR-NEXT: orr w2, w3, #4294967296
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected compatible register or logical immediate
// CHECK-ERROR-NEXT: ands w2, w3, #4294967296
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Bitfield
//------------------------------------------------------------------------------
sbfm x3, w13, #0, #0
sbfm w12, x9, #0, #0
sbfm sp, x3, #3, #5
sbfm w3, wsp, #1, #9
sbfm x9, x5, #-1, #0
sbfm x9, x5, #0, #-1
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbfm x3, w13, #0, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbfm w12, x9, #0, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbfm sp, x3, #3, #5
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbfm w3, wsp, #1, #9
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR-NEXT: sbfm x9, x5, #-1, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR-NEXT: sbfm x9, x5, #0, #-1
// CHECK-ERROR-NEXT: ^
sbfm w3, w5, #32, #1
sbfm w7, w11, #19, #32
sbfm x29, x30, #64, #0
sbfm x10, x20, #63, #64
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: sbfm w3, w5, #32, #1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: sbfm w7, w11, #19, #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR-NEXT: sbfm x29, x30, #64, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR-NEXT: sbfm x10, x20, #63, #64
// CHECK-ERROR-NEXT: ^
ubfm w3, w5, #32, #1
ubfm w7, w11, #19, #32
ubfm x29, x30, #64, #0
ubfm x10, x20, #63, #64
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: ubfm w3, w5, #32, #1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: ubfm w7, w11, #19, #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR-NEXT: ubfm x29, x30, #64, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR-NEXT: ubfm x10, x20, #63, #64
// CHECK-ERROR-NEXT: ^
bfm w3, w5, #32, #1
bfm w7, w11, #19, #32
bfm x29, x30, #64, #0
bfm x10, x20, #63, #64
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: bfm w3, w5, #32, #1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: bfm w7, w11, #19, #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR-NEXT: bfm x29, x30, #64, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR-NEXT: bfm x10, x20, #63, #64
// CHECK-ERROR-NEXT: ^
sxtb x3, x2
sxth xzr, xzr
sxtw x3, x5
// CHECK-ERROR-AARCH64: error: invalid operand for instruction
// CHECK-ERROR-AARCH64-NEXT: sxtb x3, x2
// CHECK-ERROR-AARCH64-NEXT: ^
// CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
// CHECK-ERROR-AARCH64-NEXT: sxth xzr, xzr
// CHECK-ERROR-AARCH64-NEXT: ^
// CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction
// CHECK-ERROR-AARCH64-NEXT: sxtw x3, x5
// CHECK-ERROR-AARCH64-NEXT: ^
uxtb x3, x12
uxth x5, x9
uxtw x3, x5
uxtb x2, sp
uxtb sp, xzr
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: uxtb x3, x12
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: uxth x5, x9
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-AARCH64-NEXT: error: invalid instruction
// CHECK-ERROR-AARCH64-NEXT: uxtw x3, x5
// CHECK-ERROR-AARCH64-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: uxtb x2, sp
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: uxtb sp, xzr
// CHECK-ERROR-NEXT: ^
asr x3, w2, #1
asr sp, x2, #1
asr x25, x26, #-1
asr x25, x26, #64
asr w9, w8, #32
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: asr x3, w2, #1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: asr sp, x2, #1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR-NEXT: asr x25, x26, #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR-NEXT: asr x25, x26, #64
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: asr w9, w8, #32
// CHECK-ERROR-NEXT: ^
sbfiz w1, w2, #0, #0
sbfiz wsp, w9, #0, #1
sbfiz w9, w10, #32, #1
sbfiz w11, w12, #32, #0
sbfiz w9, w10, #10, #23
sbfiz x3, x5, #12, #53
sbfiz sp, x3, #7, #6
sbfiz w3, wsp, #10, #8
// CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
// CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
// CHECK-ERROR-NEXT: sbfiz w1, w2, #0, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbfiz wsp, w9, #0, #1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: sbfiz w9, w10, #32, #1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: sbfiz w11, w12, #32, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: requested insert overflows register
// CHECK-ERROR-NEXT: sbfiz w9, w10, #10, #23
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: requested insert overflows register
// CHECK-ERROR-NEXT: sbfiz x3, x5, #12, #53
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbfiz sp, x3, #7, #6
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbfiz w3, wsp, #10, #8
// CHECK-ERROR-NEXT: ^
sbfx w1, w2, #0, #0
sbfx wsp, w9, #0, #1
sbfx w9, w10, #32, #1
sbfx w11, w12, #32, #0
sbfx w9, w10, #10, #23
sbfx x3, x5, #12, #53
sbfx sp, x3, #7, #6
sbfx w3, wsp, #10, #8
// CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
// CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
// CHECK-ERROR-NEXT: sbfx w1, w2, #0, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbfx wsp, w9, #0, #1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: sbfx w9, w10, #32, #1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: sbfx w11, w12, #32, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: requested extract overflows register
// CHECK-ERROR-NEXT: sbfx w9, w10, #10, #23
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: requested extract overflows register
// CHECK-ERROR-NEXT: sbfx x3, x5, #12, #53
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbfx sp, x3, #7, #6
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sbfx w3, wsp, #10, #8
// CHECK-ERROR-NEXT: ^
bfi w1, w2, #0, #0
bfi wsp, w9, #0, #1
bfi w9, w10, #32, #1
bfi w11, w12, #32, #0
bfi w9, w10, #10, #23
bfi x3, x5, #12, #53
bfi sp, x3, #7, #6
bfi w3, wsp, #10, #8
// CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
// CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
// CHECK-ERROR-NEXT: bfi w1, w2, #0, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: bfi wsp, w9, #0, #1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: bfi w9, w10, #32, #1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: bfi w11, w12, #32, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: requested insert overflows register
// CHECK-ERROR-NEXT: bfi w9, w10, #10, #23
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: requested insert overflows register
// CHECK-ERROR-NEXT: bfi x3, x5, #12, #53
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: bfi sp, x3, #7, #6
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: bfi w3, wsp, #10, #8
// CHECK-ERROR-NEXT: ^
bfxil w1, w2, #0, #0
bfxil wsp, w9, #0, #1
bfxil w9, w10, #32, #1
bfxil w11, w12, #32, #0
bfxil w9, w10, #10, #23
bfxil x3, x5, #12, #53
bfxil sp, x3, #7, #6
bfxil w3, wsp, #10, #8
// CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
// CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
// CHECK-ERROR-NEXT: bfxil w1, w2, #0, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: bfxil wsp, w9, #0, #1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: bfxil w9, w10, #32, #1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: bfxil w11, w12, #32, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: requested extract overflows register
// CHECK-ERROR-NEXT: bfxil w9, w10, #10, #23
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: requested extract overflows register
// CHECK-ERROR-NEXT: bfxil x3, x5, #12, #53
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: bfxil sp, x3, #7, #6
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: bfxil w3, wsp, #10, #8
// CHECK-ERROR-NEXT: ^
ubfiz w1, w2, #0, #0
ubfiz wsp, w9, #0, #1
ubfiz w9, w10, #32, #1
ubfiz w11, w12, #32, #0
ubfiz w9, w10, #10, #23
ubfiz x3, x5, #12, #53
ubfiz sp, x3, #7, #6
ubfiz w3, wsp, #10, #8
// CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
// CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
// CHECK-ERROR-NEXT: ubfiz w1, w2, #0, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ubfiz wsp, w9, #0, #1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: ubfiz w9, w10, #32, #1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: ubfiz w11, w12, #32, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: requested insert overflows register
// CHECK-ERROR-NEXT: ubfiz w9, w10, #10, #23
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: requested insert overflows register
// CHECK-ERROR-NEXT: ubfiz x3, x5, #12, #53
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ubfiz sp, x3, #7, #6
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ubfiz w3, wsp, #10, #8
// CHECK-ERROR-NEXT: ^
ubfx w1, w2, #0, #0
ubfx wsp, w9, #0, #1
ubfx w9, w10, #32, #1
ubfx w11, w12, #32, #0
ubfx w9, w10, #10, #23
ubfx x3, x5, #12, #53
ubfx sp, x3, #7, #6
ubfx w3, wsp, #10, #8
// CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]
// CHECK-ERROR-ARM64: error: expected integer in range [1, 32]
// CHECK-ERROR-NEXT: ubfx w1, w2, #0, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ubfx wsp, w9, #0, #1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: ubfx w9, w10, #32, #1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: ubfx w11, w12, #32, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: requested extract overflows register
// CHECK-ERROR-NEXT: ubfx w9, w10, #10, #23
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: requested extract overflows register
// CHECK-ERROR-NEXT: ubfx x3, x5, #12, #53
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ubfx sp, x3, #7, #6
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ubfx w3, wsp, #10, #8
// CHECK-ERROR-NEXT: ^
bfc wsp, #3, #6
bfc w4, #2, #31
bfc sp, #0, #1
bfc x6, #0, #0
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: bfc wsp, #3, #6
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: requested insert overflows register
// CHECK-ERROR-NEXT: bfc w4, #2, #31
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: bfc sp, #0, #1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected integer in range [1, 32]
// CHECK-ERROR-NEXT: bfc x6, #0, #0
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Compare & branch (immediate)
//------------------------------------------------------------------------------
cbnz wsp, lbl
cbz sp, lbl
cbz x3, x5
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: cbnz wsp, lbl
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: cbz sp, lbl
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
// CHECK-ERROR-NEXT: cbz x3, x5
// CHECK-ERROR-NEXT: ^
cbz w20, #1048576
cbnz xzr, #-1048580
cbz x29, #1
// CHECK-ERROR: error: expected label or encodable integer pc offset
// CHECK-ERROR-NEXT: cbz w20, #1048576
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
// CHECK-ERROR-NEXT: cbnz xzr, #-1048580
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
// CHECK-ERROR-NEXT: cbz x29, #1
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Conditional branch (immediate)
//------------------------------------------------------------------------------
b.zf lbl
// CHECK-ERROR: error: invalid condition code
// CHECK-ERROR-NEXT: b.zf lbl
// CHECK-ERROR-NEXT: ^
b.eq #1048576
b.ge #-1048580
b.cc #1
// CHECK-ERROR: error: expected label or encodable integer pc offset
// CHECK-ERROR-NEXT: b.eq #1048576
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
// CHECK-ERROR-NEXT: b.ge #-1048580
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
// CHECK-ERROR-NEXT: b.cc #1
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Conditional compare (immediate)
//------------------------------------------------------------------------------
ccmp wsp, #4, #2, ne
ccmp w25, #-1, #15, hs
ccmp w3, #32, #0, ge
ccmp w19, #5, #-1, lt
ccmp w20, #7, #16, hs
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ccmp wsp, #4, #2, ne
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: ccmp w25, #-1, #15, hs
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: ccmp w3, #32, #0, ge
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: ccmp w19, #5, #-1, lt
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: ccmp w20, #7, #16, hs
// CHECK-ERROR-NEXT: ^
ccmp sp, #4, #2, ne
ccmp x25, #-1, #15, hs
ccmp x3, #32, #0, ge
ccmp x19, #5, #-1, lt
ccmp x20, #7, #16, hs
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ccmp sp, #4, #2, ne
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: ccmp x25, #-1, #15, hs
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: ccmp x3, #32, #0, ge
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: ccmp x19, #5, #-1, lt
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: ccmp x20, #7, #16, hs
// CHECK-ERROR-NEXT: ^
ccmn wsp, #4, #2, ne
ccmn w25, #-1, #15, hs
ccmn w3, #32, #0, ge
ccmn w19, #5, #-1, lt
ccmn w20, #7, #16, hs
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ccmn wsp, #4, #2, ne
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: ccmn w25, #-1, #15, hs
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: ccmn w3, #32, #0, ge
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: ccmn w19, #5, #-1, lt
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: ccmn w20, #7, #16, hs
// CHECK-ERROR-NEXT: ^
ccmn sp, #4, #2, ne
ccmn x25, #-1, #15, hs
ccmn x3, #32, #0, ge
ccmn x19, #5, #-1, lt
ccmn x20, #7, #16, hs
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ccmn sp, #4, #2, ne
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: ccmn x25, #-1, #15, hs
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: ccmn x3, #32, #0, ge
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: ccmn x19, #5, #-1, lt
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: ccmn x20, #7, #16, hs
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Conditional compare (register)
//------------------------------------------------------------------------------
ccmp wsp, w4, #2, ne
ccmp w3, wsp, #0, ge
ccmp w19, w5, #-1, lt
ccmp w20, w7, #16, hs
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ccmp wsp, w4, #2, ne
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: ccmp w3, wsp, #0, ge
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: ccmp w19, w5, #-1, lt
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: ccmp w20, w7, #16, hs
// CHECK-ERROR-NEXT: ^
ccmp sp, x4, #2, ne
ccmp x25, sp, #15, hs
ccmp x19, x5, #-1, lt
ccmp x20, x7, #16, hs
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ccmp sp, x4, #2, ne
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: ccmp x25, sp, #15, hs
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: ccmp x19, x5, #-1, lt
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: ccmp x20, x7, #16, hs
// CHECK-ERROR-NEXT: ^
ccmn wsp, w4, #2, ne
ccmn w25, wsp, #15, hs
ccmn w19, w5, #-1, lt
ccmn w20, w7, #16, hs
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ccmn wsp, w4, #2, ne
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: ccmn w25, wsp, #15, hs
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: ccmn w19, w5, #-1, lt
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: ccmn w20, w7, #16, hs
// CHECK-ERROR-NEXT: ^
ccmn sp, x4, #2, ne
ccmn x25, sp, #15, hs
ccmn x19, x5, #-1, lt
ccmn x20, x7, #16, hs
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ccmn sp, x4, #2, ne
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: ccmn x25, sp, #15, hs
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: ccmn x19, x5, #-1, lt
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: ccmn x20, x7, #16, hs
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Conditional select
//------------------------------------------------------------------------------
csel w4, wsp, w9, eq
csel wsp, w2, w3, ne
csel w10, w11, wsp, ge
csel w1, w2, w3, #3
csel x4, sp, x9, eq
csel sp, x2, x3, ne
csel x10, x11, sp, ge
csel x1, x2, x3, #3
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: csel w4, wsp, w9, eq
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: csel wsp, w2, w3, ne
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: csel w10, w11, wsp, ge
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected AArch64 condition code
// CHECK-ERROR-NEXT: csel w1, w2, w3, #3
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: csel x4, sp, x9, eq
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: csel sp, x2, x3, ne
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: csel x10, x11, sp, ge
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected AArch64 condition code
// CHECK-ERROR-NEXT: csel x1, x2, x3, #3
// CHECK-ERROR-NEXT: ^
csinc w20, w21, wsp, mi
csinc sp, x30, x29, eq
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: csinc w20, w21, wsp, mi
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: csinc sp, x30, x29, eq
// CHECK-ERROR-NEXT: ^
csinv w20, wsp, wsp, mi
csinv sp, x30, x29, le
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: csinv w20, wsp, wsp, mi
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: csinv sp, x30, x29, le
// CHECK-ERROR-NEXT: ^
csneg w20, w21, wsp, mi
csneg x0, sp, x29, le
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: csneg w20, w21, wsp, mi
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: csneg x0, sp, x29, le
// CHECK-ERROR-NEXT: ^
cset wsp, lt
csetm sp, ge
cset w1, al
csetm x6, nv
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: cset wsp, lt
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: csetm sp, ge
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction
// CHECK-ERROR-NEXT: cset w1, al
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction
// CHECK-ERROR-NEXT: csetm x6, nv
// CHECK-ERROR-NEXT: ^
cinc w3, wsp, ne
cinc sp, x9, eq
cinc x2, x0, nv
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: cinc w3, wsp, ne
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: cinc sp, x9, eq
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction
// CHECK-ERROR-NEXT: cinc x2, x0, nv
// CHECK-ERROR-NEXT: ^
cinv w3, wsp, ne
cinv sp, x9, eq
cinv w8, x7, nv
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: cinv w3, wsp, ne
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: cinv sp, x9, eq
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction
// CHECK-ERROR-NEXT: cinv w8, x7, nv
// CHECK-ERROR-NEXT: ^
cneg w3, wsp, ne
cneg sp, x9, eq
cneg x4, x5, al
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: cneg w3, wsp, ne
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: cneg sp, x9, eq
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction
// CHECK-ERROR-NEXT: cneg x4, x5, al
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Data Processing (1 source)
//------------------------------------------------------------------------------
rbit x23, w2
//CHECK-ERROR: error: invalid operand for instruction
//CHECK-ERROR-NEXT: rbit x23, w2
cls sp, x2
//CHECK-ERROR: error: invalid operand for instruction
//CHECK-ERROR-NEXT: cls sp, x2
clz wsp, w3
//CHECK-ERROR: error: invalid operand for instruction
//CHECK-ERROR-NEXT: clz wsp, w3
//------------------------------------------------------------------------------
// Data Processing (2 sources)
//------------------------------------------------------------------------------
udiv x23, w2, x18
//CHECK-ERROR: error: invalid operand for instruction
//CHECK-ERROR-NEXT: udiv x23, w2, x18
lsl sp, x2, x4
//CHECK-ERROR: error: invalid operand for instruction
//CHECK-ERROR-NEXT: lsl sp, x2, x4
asr wsp, w3, w9
//CHECK-ERROR: error: invalid operand for instruction
//CHECK-ERROR-NEXT: asr wsp, w3, w9
//------------------------------------------------------------------------------
// Data Processing (3 sources)
//------------------------------------------------------------------------------
madd sp, x3, x9, x10
//CHECK-ERROR: error: invalid operand for instruction
//CHECK-ERROR-NEXT: madd sp, x3, x9, x10
//------------------------------------------------------------------------------
// Exception generation
//------------------------------------------------------------------------------
svc #-1
hlt #65536
dcps4 #43
dcps4
// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 65535]
// CHECK-ERROR-NEXT: svc #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 65535]
// CHECK-ERROR-NEXT: hlt #65536
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{invalid instruction|unrecognized instruction mnemonic}}
// CHECK-ERROR-NEXT: dcps4 #43
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{invalid instruction|unrecognized instruction mnemonic}}
// CHECK-ERROR-NEXT: dcps4
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Extract (immediate)
//------------------------------------------------------------------------------
extr w2, w20, w30, #-1
extr w9, w19, w20, #32
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: extr w2, w20, w30, #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: extr w9, w19, w20, #32
// CHECK-ERROR-NEXT: ^
extr x10, x15, x20, #-1
extr x20, x25, x30, #64
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR-NEXT: extr x10, x15, x20, #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR-NEXT: extr x20, x25, x30, #64
// CHECK-ERROR-NEXT: ^
ror w9, w10, #32
ror x10, x11, #64
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]
// CHECK-ERROR-NEXT: ror w9, w10, #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]
// CHECK-ERROR-NEXT: ror x10, x11, #64
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Floating-point compare
//------------------------------------------------------------------------------
fcmp s3, d2
// CHECK-ERROR-AARCH64: error: expected floating-point constant #0.0
// CHECK-ERROR-ARM64: error: invalid operand for instruction
// CHECK-ERROR-NEXT: fcmp s3, d2
// CHECK-ERROR-NEXT: ^
fcmp s9, #-0.0
fcmp d3, #-0.0
fcmp s1, #1.0
fcmpe s30, #-0.0
// CHECK-ERROR: error: expected floating-point constant #0.0
// CHECK-ERROR-NEXT: fcmp s9, #-0.0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected floating-point constant #0.0
// CHECK-ERROR-NEXT: fcmp d3, #-0.0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected floating-point constant #0.0
// CHECK-ERROR-NEXT: fcmp s1, #1.0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected floating-point constant #0.0
// CHECK-ERROR-NEXT: fcmpe s30, #-0.0
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Floating-point conditional compare
//------------------------------------------------------------------------------
fccmp s19, s5, #-1, lt
fccmp s20, s7, #16, hs
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: fccmp s19, s5, #-1, lt
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: fccmp s20, s7, #16, hs
// CHECK-ERROR-NEXT: ^
fccmp d19, d5, #-1, lt
fccmp d20, d7, #16, hs
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: fccmp d19, d5, #-1, lt
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: fccmp d20, d7, #16, hs
// CHECK-ERROR-NEXT: ^
fccmpe s19, s5, #-1, lt
fccmpe s20, s7, #16, hs
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: fccmpe s19, s5, #-1, lt
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: fccmpe s20, s7, #16, hs
// CHECK-ERROR-NEXT: ^
fccmpe d19, d5, #-1, lt
fccmpe d20, d7, #16, hs
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: fccmpe d19, d5, #-1, lt
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]
// CHECK-ERROR-NEXT: fccmpe d20, d7, #16, hs
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Floating-point conditional compare
//------------------------------------------------------------------------------
fcsel q3, q20, q9, pl
fcsel h9, h10, h11, mi
fcsel b9, b10, b11, mi
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: fcsel q3, q20, q9, pl
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: instruction requires: fullfp16
// CHECK-ERROR-NEXT: fcsel h9, h10, h11, mi
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: fcsel b9, b10, b11, mi
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Floating-point data-processing (1 source)
//------------------------------------------------------------------------------
fmov d0, s3
fcvt d0, d1
// CHECK-ERROR: error: expected compatible register or floating-point constant
// CHECK-ERROR-NEXT: fmov d0, s3
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: fcvt d0, d1
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Floating-point data-processing (2 sources)
//------------------------------------------------------------------------------
fadd s0, d3, d7
fmaxnm d3, s19, d12
fnmul d1, d9, s18
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: fadd s0, d3, d7
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: fmaxnm d3, s19, d12
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: fnmul d1, d9, s18
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Floating-point data-processing (3 sources)
//------------------------------------------------------------------------------
fmadd b3, b4, b5, b6
fmsub h1, h2, h3, h4
fnmadd q3, q5, q6, q7
fnmsub s2, s4, d5, h9
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: fmadd b3, b4, b5, b6
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: instruction requires: fullfp16
// CHECK-ERROR-NEXT: fmsub h1, h2, h3, h4
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: fnmadd q3, q5, q6, q7
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: fnmsub s2, s4, d5, h9
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Floating-point conditional compare
//------------------------------------------------------------------------------
fcvtzs w13, s31, #0
fcvtzs w19, s20, #33
fcvtzs wsp, s19, #14
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR-NEXT: fcvtzs w13, s31, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR-NEXT: fcvtzs w19, s20, #33
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: fcvtzs wsp, s19, #14
// CHECK-ERROR-NEXT: ^
fcvtzs x13, s31, #0
fcvtzs x19, s20, #65
fcvtzs sp, s19, #14
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR-NEXT: fcvtzs x13, s31, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR-NEXT: fcvtzs x19, s20, #65
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: fcvtzs sp, s19, #14
// CHECK-ERROR-NEXT: ^
fcvtzu w13, s31, #0
fcvtzu w19, s20, #33
fcvtzu wsp, s19, #14
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR-NEXT: fcvtzu w13, s31, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]
// CHECK-ERROR-NEXT: fcvtzu w19, s20, #33
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: fcvtzu wsp, s19, #14
// CHECK-ERROR-NEXT: ^
fcvtzu x13, s31, #0
fcvtzu x19, s20, #65
fcvtzu sp, s19, #14
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR-NEXT: fcvtzu x13, s31, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]
// CHECK-ERROR-NEXT: fcvtzu x19, s20, #65
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: fcvtzu sp, s19, #14
// CHECK-ERROR-NEXT: ^
scvtf w13, s31, #0
scvtf w19, s20, #33
scvtf wsp, s19, #14
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: scvtf w13, s31, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: scvtf w19, s20, #33
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: scvtf wsp, s19, #14
// CHECK-ERROR-NEXT: ^
scvtf x13, s31, #0
scvtf x19, s20, #65
scvtf sp, s19, #14
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: scvtf x13, s31, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: scvtf x19, s20, #65
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: scvtf sp, s19, #14
// CHECK-ERROR-NEXT: ^
ucvtf w13, s31, #0
ucvtf w19, s20, #33
ucvtf wsp, s19, #14
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ucvtf w13, s31, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ucvtf w19, s20, #33
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ucvtf wsp, s19, #14
// CHECK-ERROR-NEXT: ^
ucvtf x13, s31, #0
ucvtf x19, s20, #65
ucvtf sp, s19, #14
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ucvtf x13, s31, #0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ucvtf x19, s20, #65
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ucvtf sp, s19, #14
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Floating-point immediate
//------------------------------------------------------------------------------
;; Exponent too large
fmov d3, #0.0625
fmov s2, #32.0
fmov s2, #32
fmov v0.4s, #-32
// CHECK-ERROR: error: expected compatible register or floating-point constant
// CHECK-ERROR-NEXT: fmov d3, #0.0625
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant
// CHECK-ERROR-NEXT: fmov s2, #32.0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant
// CHECK-ERROR-NEXT: fmov s2, #32
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant
// CHECK-ERROR-NEXT: fmov v0.4s, #-32
// CHECK-ERROR-NEXT: ^
;; Fraction too precise
fmov s9, #1.03125
fmov s28, #1.96875
// CHECK-ERROR: error: expected compatible register or floating-point constant
// CHECK-ERROR-NEXT: fmov s9, #1.03125
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant
// CHECK-ERROR-NEXT: fmov s28, #1.96875
// CHECK-ERROR-NEXT: ^
;; Explicitly encoded value too large
fmov s15, #0x100
// CHECK-ERROR: error: encoded floating point value out of range
// CHECK-ERROR-NEXT: fmov s15, #0x100
// CHECK-ERROR-NEXT: ^
;; Not possible to fmov ZR to a whole vector
fmov v0.4s, #0.0
// CHECK-ERROR: error: expected compatible register or floating-point constant
// CHECK-ERROR-NEXT: fmov v0.4s, #0.0
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Floating-point <-> integer conversion
//------------------------------------------------------------------------------
fmov x3, v0.d[0]
fmov v29.1d[1], x2
fmov x7, v0.d[2]
fcvtns sp, s5
scvtf s6, wsp
// CHECK-ERROR: error: expected lane specifier '[1]'
// CHECK-ERROR-NEXT: fmov x3, v0.d[0]
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-AARCH64-NEXT: error: lane number incompatible with layout
// CHECK-ERROR-ARM64-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: fmov v29.1d[1], x2
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-AARCH64-NEXT: error: lane number incompatible with layout
// CHECK-ERROR-ARM64-NEXT: error: expected lane specifier '[1]'
// CHECK-ERROR-NEXT: fmov x7, v0.d[2]
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: fcvtns sp, s5
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: scvtf s6, wsp
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Load-register (literal)
//------------------------------------------------------------------------------
ldr sp, some_label
ldrsw w3, somewhere
ldr v0, some_label
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldr sp, some_label
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldrsw w3, somewhere
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldr v0, some_label
// CHECK-ERROR-NEXT: ^
ldrsw x2, #1048576
ldr q0, #-1048580
ldr x0, #2
// CHECK-ERROR: error: expected label or encodable integer pc offset
// CHECK-ERROR-NEXT: ldrsw x2, #1048576
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
// CHECK-ERROR-NEXT: ldr q0, #-1048580
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset
// CHECK-ERROR-NEXT: ldr x0, #2
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Load/store exclusive
//------------------------------------------------------------------------------
stxrb w2, w3, [x4, #20]
stlxrh w10, w11, [w2]
// CHECK-ERROR-AARCH64: error: expected '// CHECK-ERROR-ARM64: error: index must be absent or // CHECK-ERROR-NEXT: stxrb w2, w3, [x4, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: stlxrh w10, w11, [w2]
// CHECK-ERROR-NEXT: ^
stlxr x20, w21, [sp]
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: stlxr x20, w21, [sp]
// CHECK-ERROR-NEXT: ^
ldxr sp, [sp]
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldxr sp, [sp]
// CHECK-ERROR-NEXT: ^
stxp x1, x2, x3, [x4]
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: stxp x1, x2, x3, [x4]
// CHECK-ERROR-NEXT: ^
stlxp w5, x1, w4, [x5]
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: stlxp w5, x1, w4, [x5]
// CHECK-ERROR-NEXT: ^
stlxp w17, w6, x7, [x22]
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: stlxp w17, w6, x7, [x22]
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Load/store (unscaled immediate)
//------------------------------------------------------------------------------
ldur v0, [x0, stur v0, [x0, // CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldur v0, [x0, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: stur v0, [x0, // CHECK-ERROR-NEXT: ^
ldurb w2, [sp, sturh w17, [x1, ldursw x20, [x1, ldur x12, [sp, // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldurb w2, [sp, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: sturh w17, [x1, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldursw x20, [x1, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldur x12, [sp, // CHECK-ERROR-NEXT: ^
stur h2, [x2, stur b2, [x2, ldursb x9, [sp, ldur w2, [x30, stur q9, [x20, // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: stur h2, [x2, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: stur b2, [x2, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldursb x9, [sp, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldur w2, [x30, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: stur q9, [x20, // CHECK-ERROR-NEXT: ^
prfum pstl3strm, [xzr]
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: prfum pstl3strm, [xzr]
// CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Load-store register (immediate post-indexed)
//------------------------------------------------------------------------------
ldr v0, [x0], str v0, [x0], // CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldr v0, [x0], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: str v0, [x0], // CHECK-ERROR-NEXT: ^
ldr x3, [x4, ldr x4, [x9, // CHECK-ERROR-AARCH64: error: invalid operand for instruction
// CHECK-ERROR-ARM64: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldr x3, [x4, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-AARCH64-NEXT: error: expected label or encodable integer pc offset
// CHECK-ERROR-AARCH64-NEXT: ldr x4, [x9, // CHECK-ERROR-AARCH64-NEXT: ^
strb w1, [x19], strb w9, [sp], strh w1, [x19], strh w9, [sp], str w1, [x19], str w9, [sp], // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: strb w1, [x19], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: strb w9, [sp], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: strh w1, [x19], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: strh w9, [sp], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: str w1, [x19], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: str w9, [sp], // CHECK-ERROR-NEXT: ^
ldrb w1, [x19], ldrb w9, [sp], ldrh w1, [x19], ldrh w9, [sp], ldr w1, [x19], ldr w9, [sp], // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrb w1, [x19], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrb w9, [sp], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrh w1, [x19], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrh w9, [sp], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldr w1, [x19], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldr w9, [sp], // CHECK-ERROR-NEXT: ^
ldrsb x2, [x3], ldrsb x22, [x13], ldrsh x2, [x3], ldrsh x22, [x13], ldrsw x2, [x3], ldrsw x22, [x13], // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrsb x2, [x3], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrsb x22, [x13], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrsh x2, [x3], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrsh x22, [x13], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrsw x2, [x3], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrsw x22, [x13], // CHECK-ERROR-NEXT: ^
ldrsb w2, [x3], ldrsb w22, [x13], ldrsh w2, [x3], ldrsh w22, [x13], // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrsb w2, [x3], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrsb w22, [x13], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrsh w2, [x3], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrsh w22, [x13], // CHECK-ERROR-NEXT: ^
str b3, [x3], str b3, [x13], str h3, [x3], str h3, [x13], str s3, [x3], str s3, [x13], str d3, [x3], str d3, [x13], str q3, [x3], str q3, [x13], // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: str b3, [x3], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: str b3, [x13], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: str h3, [x3], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: str h3, [x13], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: str s3, [x3], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: str s3, [x13], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: str d3, [x3], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: str d3, [x13], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: str q3, [x3], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: str q3, [x13], // CHECK-ERROR-NEXT: ^
ldr b3, [x3], ldr b3, [x13], ldr h3, [x3], ldr h3, [x13], ldr s3, [x3], ldr s3, [x13], ldr d3, [x3], ldr d3, [x13], ldr q3, [x3], ldr q3, [x13], // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldr b3, [x3], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldr b3, [x13], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldr h3, [x3], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldr h3, [x13], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldr s3, [x3], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldr s3, [x13], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldr d3, [x3], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldr d3, [x13], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldr q3, [x3], // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldr q3, [x13], // CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Load-store register (immediate pre-indexed)
//------------------------------------------------------------------------------
ldr v0, [x0, str v0, [x0, // CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldr v0, [x0, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: str v0, [x0, // CHECK-ERROR-NEXT: ^
ldr x3, [x4]!
// CHECK-ERROR: error:
// CHECK-ERROR-NEXT: ldr x3, [x4]!
// CHECK-ERROR-NEXT: ^
strb w1, [x19, strb w9, [sp, strh w1, [x19, strh w9, [sp, str w1, [x19, str w9, [sp, // CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: strb w1, [x19, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: strb w9, [sp, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: strh w1, [x19, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: strh w9, [sp, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: str w1, [x19, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: str w9, [sp, // CHECK-ERROR-NEXT: ^
ldrb w1, [x19, ldrb w9, [sp, ldrh w1, [x19, ldrh w9, [sp, ldr w1, [x19, ldr w9, [sp, // CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldrb w1, [x19, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrb w9, [sp, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldrh w1, [x19, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrh w9, [sp, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldr w1, [x19, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldr w9, [sp, // CHECK-ERROR-NEXT: ^
ldrsb x2, [x3, ldrsb x22, [x13, ldrsh x2, [x3, ldrsh x22, [x13, ldrsw x2, [x3, ldrsw x22, [x13, // CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldrsb x2, [x3, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrsb x22, [x13, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldrsh x2, [x3, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrsh x22, [x13, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldrsw x2, [x3, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrsw x22, [x13, // CHECK-ERROR-NEXT: ^
ldrsb w2, [x3, ldrsb w22, [x13, ldrsh w2, [x3, ldrsh w22, [x13, // CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldrsb w2, [x3, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrsb w22, [x13, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldrsh w2, [x3, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldrsh w22, [x13, // CHECK-ERROR-NEXT: ^
str b3, [x3, str b3, [x13, str h3, [x3, str h3, [x13, str s3, [x3, str s3, [x13, str d3, [x3, str d3, [x13, // CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: str b3, [x3, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: str b3, [x13, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: str h3, [x3, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: str h3, [x13, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: str s3, [x3, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: str s3, [x13, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: str d3, [x3, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: str d3, [x13, // CHECK-ERROR-NEXT: ^
ldr b3, [x3, ldr b3, [x13, ldr h3, [x3, ldr h3, [x13, ldr s3, [x3, ldr s3, [x13, ldr d3, [x3, ldr d3, [x13, // CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldr b3, [x3, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldr b3, [x13, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldr h3, [x3, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldr h3, [x13, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldr s3, [x3, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldr s3, [x13, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: ldr d3, [x3, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldr d3, [x13, // CHECK-ERROR-NEXT: ^
//------------------------------------------------------------------------------
// Load/store (unprivileged)
//------------------------------------------------------------------------------
ldtrb w2, [sp, sttrh w17, [x1, ldtrsw x20, [x1, ldtr x12, [sp, // CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldtrb w2, [sp, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: sttrh w17, [x1, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldtrsw x20, [x1, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldtr x12, [sp, // CHECK-ERROR-NEXT: ^
sttr h2, [x2, sttr b2, [x2, ldtrsb x9, [sp, ldtr w2, [x30, sttr q9, [x20, // CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sttr h2, [x2, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: invalid operand for instruction
// CHECK-ERROR-NEXT: sttr b2, [x2, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldtrsb x9, [sp, // CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]
// CHECK-ERROR-NEXT: ldtr w2, [x30,