1// RUN: llvm-mc -triple=aarch64-none-linux-gnu < %s | FileCheck %s
2
3// CHECK: sub w0, w2, #2, lsl #12
4// CHECK: sub w0, w2, #2, lsl #12
5        sub w0, w2, #2, lsl 12
6        add w0, w2, #-2, lsl 12
7// CHECK: sub x1, x3, #2, lsl #12
8// CHECK: sub x1, x3, #2, lsl #12
9        sub x1, x3, #2, lsl 12
10        add x1, x3, #-2, lsl 12
11// CHECK: sub x1, x3, #4
12// CHECK: sub x1, x3, #4
13        sub x1, x3, #4
14        add x1, x3, #-4
15// CHECK: sub x1, x3, #4095
16// CHECK: sub x1, x3, #4095
17        sub x1, x3, #4095, lsl 0
18        add x1, x3, #-4095, lsl 0
19// CHECK: sub x3, x4, #0
20        sub x3, x4, #0
21
22// CHECK: add w0, w2, #2, lsl #12
23// CHECK: add w0, w2, #2, lsl #12
24        add w0, w2, #2, lsl 12
25        sub w0, w2, #-2, lsl 12
26// CHECK: add x1, x3, #2, lsl #12
27// CHECK: add x1, x3, #2, lsl #12
28        add x1, x3, #2, lsl 12
29        sub x1, x3, #-2, lsl 12
30// CHECK: add x1, x3, #4
31// CHECK: add x1, x3, #4
32        add x1, x3, #4
33        sub x1, x3, #-4
34// CHECK: add x1, x3, #4095
35// CHECK: add x1, x3, #4095
36        add x1, x3, #4095, lsl 0
37        sub x1, x3, #-4095, lsl 0
38// CHECK: add x2, x5, #0
39        add x2, x5, #0
40
41// CHECK: subs w0, w2, #2, lsl #12
42// CHECK: subs w0, w2, #2, lsl #12
43        subs w0, w2, #2, lsl 12
44        adds w0, w2, #-2, lsl 12
45// CHECK: subs x1, x3, #2, lsl #12
46// CHECK: subs x1, x3, #2, lsl #12
47        subs x1, x3, #2, lsl 12
48        adds x1, x3, #-2, lsl 12
49// CHECK: subs x1, x3, #4
50// CHECK: subs x1, x3, #4
51        subs x1, x3, #4
52        adds x1, x3, #-4
53// CHECK: subs x1, x3, #4095
54// CHECK: subs x1, x3, #4095
55        subs x1, x3, #4095, lsl 0
56        adds x1, x3, #-4095, lsl 0
57// CHECK: subs x3, x4, #0
58        subs x3, x4, #0
59
60// CHECK: adds w0, w2, #2, lsl #12
61// CHECK: adds w0, w2, #2, lsl #12
62        adds w0, w2, #2, lsl 12
63        subs w0, w2, #-2, lsl 12
64// CHECK: adds x1, x3, #2, lsl #12
65// CHECK: adds x1, x3, #2, lsl #12
66        adds x1, x3, #2, lsl 12
67        subs x1, x3, #-2, lsl 12
68// CHECK: adds x1, x3, #4
69// CHECK: adds x1, x3, #4
70        adds x1, x3, #4
71        subs x1, x3, #-4
72// CHECK: adds x1, x3, #4095
73// CHECK: adds x1, x3, #4095
74        adds x1, x3, #4095, lsl 0
75        subs x1, x3, #-4095, lsl 0
76// CHECK: adds x2, x5, #0
77        adds x2, x5, #0
78
79// CHECK: {{adds xzr,|cmn}} x5, #5
80// CHECK: {{adds xzr,|cmn}} x5, #5
81        cmn x5, #5
82        cmp x5, #-5
83// CHECK: {{subs xzr,|cmp}} x6, #4095
84// CHECK: {{subs xzr,|cmp}} x6, #4095
85        cmp x6, #4095
86        cmn x6, #-4095
87// CHECK: {{adds wzr,|cmn}} w7, #5
88// CHECK: {{adds wzr,|cmn}} w7, #5
89        cmn w7, #5
90        cmp w7, #-5
91// CHECK: {{subs wzr,|cmp}} w8, #4095
92// CHECK: {{subs wzr,|cmp}} w8, #4095
93        cmp w8, #4095
94        cmn w8, #-4095
95