1// RUN: llvm-mc -triple=aarch64-none-linux-gnu < %s | FileCheck %s
2// RUN: not llvm-mc -mattr=+no-neg-immediates -triple=aarch64-none-linux-gnu < %s 2>&1 | FileCheck %s --check-prefix=CHECK-NO-NEG-IMM
3
4// CHECK: and x0, x1, #0xfffffffffffffffd
5// CHECK: and x0, x1, #0xfffffffffffffffd
6// CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
7        and x0, x1, #~2
8        bic x0, x1, #2
9
10// CHECK: and w0, w1, #0xfffffffd
11// CHECK: and w0, w1, #0xfffffffd
12// CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
13        and w0, w1, #~2
14        bic w0, w1, #2
15
16// CHECK: ands x0, x1, #0xfffffffffffffffd
17// CHECK: ands x0, x1, #0xfffffffffffffffd
18// CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
19        ands x0, x1, #~2
20        bics x0, x1, #2
21
22// CHECK: ands w0, w1, #0xfffffffd
23// CHECK: ands w0, w1, #0xfffffffd
24// CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
25        ands w0, w1, #~2
26        bics w0, w1, #2
27
28// CHECK: orr x0, x1, #0xfffffffffffffffd
29// CHECK: orr x0, x1, #0xfffffffffffffffd
30// CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
31        orr x0, x1, #~2
32        orn x0, x1, #2
33
34// CHECK: orr w2, w1, #0xfffffffc
35// CHECK: orr w2, w1, #0xfffffffc
36// CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
37        orr w2, w1, #~3
38        orn w2, w1, #3
39
40// CHECK: eor x0, x1, #0xfffffffffffffffd
41// CHECK: eor x0, x1, #0xfffffffffffffffd
42// CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
43        eor x0, x1, #~2
44        eon x0, x1, #2
45
46// CHECK: eor w2, w1, #0xfffffffc
47// CHECK: eor w2, w1, #0xfffffffc
48// CHECK-NO-NEG-IMM: instruction requires: NegativeImmediates
49        eor w2, w1, #~3
50        eon w2, w1, #3
51