// RUN: llvm-mc -triple=aarch64 < %s | FileCheck %s --check-prefixes=CHECK,ALIAS
// RUN: llvm-mc -triple=aarch64 -M no-aliases < %s | FileCheck %s --check-prefixes=CHECK,NOALIAS
// RUN: not llvm-mc -mattr=+no-neg-immediates -triple=aarch64-none-linux-gnu < %s 2>&1 | FileCheck %s --check-prefix=CHECK-NO-NEG-IMM
/// +all does not imply +no-neg-immediates.
// RUN: llvm-mc -triple=aarch64 -mattr=+all -M no-aliases %s | FileCheck %s --check-prefixes=CHECK,NOALIAS
add w0, w2, sub w0, w2, // CHECK: add w0, w2, // CHECK: sub w0, w2,
add w0, w2, sub w0, w2, // CHECK: sub w0, w2, // CHECK: add w0, w2,
// CHECK: sub w0, w2, // CHECK: sub w0, w2, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
sub w0, w2, add w0, w2, // CHECK: sub x1, x3, // CHECK: sub x1, x3, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
sub x1, x3, add x1, x3, // CHECK: sub x1, x3, // CHECK: sub x1, x3, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
sub x1, x3, add x1, x3, // CHECK: sub x1, x3, // CHECK: sub x1, x3, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
sub x1, x3, add x1, x3, // CHECK: sub x3, x4, sub x3, x4,
// CHECK: add w0, w2, // CHECK: add w0, w2, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
add w0, w2, sub w0, w2, // CHECK: add x1, x3, // CHECK: add x1, x3, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
add x1, x3, sub x1, x3, // CHECK: add x1, x3, // CHECK: add x1, x3, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
add x1, x3, sub x1, x3, // CHECK: add x1, x3, // CHECK: add x1, x3, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
add x1, x3, sub x1, x3, // CHECK: add x2, x5, add x2, x5,
// CHECK: subs w0, w2, // CHECK: subs w0, w2, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
subs w0, w2, adds w0, w2, // CHECK: subs x1, x3, // CHECK: subs x1, x3, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
subs x1, x3, adds x1, x3, // CHECK: subs x1, x3, // CHECK: subs x1, x3, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
subs x1, x3, adds x1, x3, // CHECK: subs x1, x3, // CHECK: subs x1, x3, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
subs x1, x3, adds x1, x3, // CHECK: subs x3, x4, subs x3, x4,
// CHECK: adds w0, w2, // CHECK: adds w0, w2, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
adds w0, w2, subs w0, w2, // CHECK: adds x1, x3, // CHECK: adds x1, x3, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
adds x1, x3, subs x1, x3, // CHECK: adds x1, x3, // CHECK: adds x1, x3, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
adds x1, x3, subs x1, x3, // CHECK: adds x1, x3, // CHECK: adds x1, x3, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
adds x1, x3, subs x1, x3, // CHECK: adds x2, x5, adds x2, x5,
// ALIAS: cmn x5, // ALIAS: cmn x5, // NOALIAS: adds xzr, x5, // NOALIAS: adds xzr, x5, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
cmn x5, cmp x5, // ALIAS: cmp x6, // ALIAS: cmp x6, // NOALIAS: subs xzr, x6, // NOALIAS: subs xzr, x6, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
cmp x6, cmn x6, // ALIAS: cmn w7, // ALIAS: cmn w7, // NOALIAS: adds wzr, w7, // NOALIAS: adds wzr, w7, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
cmn w7, cmp w7, // ALIAS: cmp w8, // ALIAS: cmp w8, // NOALIAS: subs wzr, w8, // NOALIAS: subs wzr, w8, // CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
cmp w8, cmn w8,