/test/MC/AArch64/basic-a64-diagnostics.s
Assembly | 3893 lines | 3879 code | 14 blank | 0 comment | 9 complexity | 7a0d7fb06ab593b2178a9ef085589a76 MD5 | raw file
Possible License(s): BSD-3-Clause, Apache-2.0
Large files files are truncated, but you can click here to view the full file
- // 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 #3
- 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 #3
- // 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 #-1
- add x3, x5, w7, uxtb #5
- sub x9, x15, x2, uxth #5
- // CHECK-ERROR: error: expected integer shift amount
- // CHECK-ERROR: add x9, x10, w11, uxtb #-1
- // CHECK-ERROR: ^
- // CHECK-ERROR: error: expected '[su]xt[bhw]' with optional integer in range [0, 4]
- // CHECK-ERROR: add x3, x5, w7, uxtb #5
- // CHECK-ERROR: ^
- // CHECK-ERROR: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]
- // CHECK-ERROR: sub x9, x15, x2, uxth #5
- // CHECK-ERROR: ^
- // Wrong registers on normal variants
- add xzr, x3, x5, uxtx
- sub x3, xzr, w9, sxth #1
- 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 #1
- // 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 #2
- // 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 #2
- // CHECK-ERROR: ^
- // Amount not optional if lsl valid and used
- add sp, x5, x7, lsl
- // CHECK-ERROR: error: expected #imm after shift specifier
- // CHECK-ERROR: add sp, x5, x7, lsl
- // CHECK-ERROR: ^
- //------------------------------------------------------------------------------
- // Add/sub (immediate)
- //------------------------------------------------------------------------------
- // Out of range immediates: more than 12 bits
- add w4, w5, #-4097
- add w5, w6, #0x1000
- add w4, w5, #-4096, lsl #12
- add w5, w6, #0x1000, lsl #12
- // CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
- // CHECK-ERROR-NEXT: add w4, w5, #-4097
- // 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, #0x1000
- // CHECK-ERROR-AARCH64-NEXT: ^
- // CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
- // CHECK-ERROR-NEXT: add w4, w5, #-4096, lsl #12
- // CHECK-ERROR-NEXT: ^
- // CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
- // CHECK-ERROR-NEXT: add w5, w6, #0x1000, lsl #12
- // CHECK-ERROR-NEXT: ^
- // Only lsl #0 and lsl #12 are allowed
- add w2, w3, #0x1, lsl #1
- add w5, w17, #0xfff, lsl #13
- add w17, w20, #0x1000, lsl #12
- sub xsp, x34, #0x100, lsl #-1
- // CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]
- // CHECK-ERROR-NEXT: add w2, w3, #0x1, lsl #1
- // CHECK-ERROR-NEXT: ^
- // CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
- // CHECK-ERROR-NEXT: add w5, w17, #0xfff, lsl #13
- // CHECK-ERROR-NEXT: ^
- // CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]
- // CHECK-ERROR-NEXT: add w17, w20, #0x1000, lsl #12
- // CHECK-ERROR-NEXT: ^
- // CHECK-ERROR-NEXT: error: only 'lsl #+N' valid after immediate
- // CHECK-ERROR-NEXT: sub xsp, x34, #0x100, lsl #-1
- // 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: expected compatible register or logical immediate
- // 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: ^
- // …
Large files files are truncated, but you can click here to view the full file