Roll r127459 back in:
[oota-llvm.git] / test / MC / ARM / arm_instructions.s
1 @ RUN: llvm-mc -mcpu=cortex-a8 -triple arm-unknown-unknown -show-encoding %s | FileCheck %s
2
3 @ CHECK: nop
4 @ CHECK: encoding: [0x00,0xf0,0x20,0xe3]
5         nop
6
7 @ CHECK: nopeq
8 @ CHECK: encoding: [0x00,0xf0,0x20,0x03]
9         nopeq
10
11 @ CHECK: trap
12 @ CHECK: encoding: [0xfe,0xde,0xff,0xe7]
13         trap
14
15 @ CHECK: bx     lr
16 @ CHECK: encoding: [0x1e,0xff,0x2f,0xe1]
17         bx lr
18
19 @ CHECK: vqdmull.s32    q8, d17, d16
20 @ CHECK: encoding: [0xa0,0x0d,0xe1,0xf2]
21         vqdmull.s32     q8, d17, d16
22
23 @ CHECK: ldmia r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe8]
24 @ CHECK: ldmib r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x92,0xe9]
25 @ CHECK: ldmda r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x12,0xe8]
26 @ CHECK: ldmdb r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x12,0xe9]
27         ldmia     r2, {r1,r3-r6,sp}
28         ldmib     r2, {r1,r3-r6,sp}
29         ldmda     r2, {r1,r3-r6,sp}
30         ldmdb     r2, {r1,r3-r6,sp}
31
32 @ CHECK: stmia r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x82,0xe8]
33 @ CHECK: stmib r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x82,0xe9]
34 @ CHECK: stmda r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x02,0xe8]
35 @ CHECK: stmdb r2, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x02,0xe9]
36         stmia     r2, {r1,r3-r6,sp}
37         stmib     r2, {r1,r3-r6,sp}
38         stmda     r2, {r1,r3-r6,sp}
39         stmdb     r2, {r1,r3-r6,sp}
40
41 @ CHECK: ldmia r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xb2,0xe8]
42 @ CHECK: ldmib r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xb2,0xe9]
43 @ CHECK: ldmda r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x32,0xe8]
44 @ CHECK: ldmdb r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x32,0xe9]
45         ldmia     r2!, {r1,r3-r6,sp}
46         ldmib     r2!, {r1,r3-r6,sp}
47         ldmda     r2!, {r1,r3-r6,sp}
48         ldmdb     r2!, {r1,r3-r6,sp}
49
50 @ CHECK: stmia r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa2,0xe8]
51 @ CHECK: stmib r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0xa2,0xe9]
52 @ CHECK: stmda r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x22,0xe8]
53 @ CHECK: stmdb r2!, {r1, r3, r4, r5, r6, sp} @ encoding: [0x7a,0x20,0x22,0xe9]
54         stmia     r2!, {r1,r3-r6,sp}
55         stmib     r2!, {r1,r3-r6,sp}
56         stmda     r2!, {r1,r3-r6,sp}
57         stmdb     r2!, {r1,r3-r6,sp}
58
59 @ CHECK: and    r1, r2, r3 @ encoding: [0x03,0x10,0x02,0xe0]
60         and r1,r2,r3
61
62 @ FIXME: This is wrong, we are dropping the 's' for now.
63 @ CHECK-FIXME: ands     r1, r2, r3 @ encoding: [0x03,0x10,0x12,0xe0]
64         ands r1,r2,r3
65
66 @ CHECK: eor    r1, r2, r3 @ encoding: [0x03,0x10,0x22,0xe0]
67         eor r1,r2,r3
68
69 @ FIXME: This is wrong, we are dropping the 's' for now.
70 @ CHECK-FIXME: eors     r1, r2, r3 @ encoding: [0x03,0x10,0x32,0xe0]
71         eors r1,r2,r3
72
73 @ CHECK: sub    r1, r2, r3 @ encoding: [0x03,0x10,0x42,0xe0]
74         sub r1,r2,r3
75
76 @ FIXME: This is wrong, we are dropping the 's' for now.
77 @ CHECK-FIXME: subs     r1, r2, r3 @ encoding: [0x03,0x10,0x52,0xe0]
78         subs r1,r2,r3
79
80 @ CHECK: add    r1, r2, r3 @ encoding: [0x03,0x10,0x82,0xe0]
81         add r1,r2,r3
82
83 @ FIXME: This is wrong, we are dropping the 's' for now.
84 @ CHECK-FIXME: adds     r1, r2, r3 @ encoding: [0x03,0x10,0x92,0xe0]
85         adds r1,r2,r3
86
87 @ CHECK: adc    r1, r2, r3 @ encoding: [0x03,0x10,0xa2,0xe0]
88         adc r1,r2,r3
89
90 @ CHECK: sbc    r1, r2, r3 @ encoding: [0x03,0x10,0xc2,0xe0]
91         sbc r1,r2,r3
92
93 @ CHECK: orr    r1, r2, r3 @ encoding: [0x03,0x10,0x82,0xe1]
94         orr r1,r2,r3
95
96 @ FIXME: This is wrong, we are dropping the 's' for now.
97 @ CHECK-FIXME: orrs     r1, r2, r3 @ encoding: [0x03,0x10,0x92,0xe1]
98         orrs r1,r2,r3
99
100 @ CHECK: bic    r1, r2, r3 @ encoding: [0x03,0x10,0xc2,0xe1]
101         bic r1,r2,r3
102
103 @ FIXME: This is wrong, we are dropping the 's' for now.
104 @ CHECK-FIXME: bics     r1, r2, r3 @ encoding: [0x03,0x10,0xd2,0xe1]
105         bics r1,r2,r3
106
107 @ CHECK: mov    r1, r2 @ encoding: [0x02,0x10,0xa0,0xe1]
108         mov r1,r2
109
110 @ CHECK: mvn    r1, r2 @ encoding: [0x02,0x10,0xe0,0xe1]
111         mvn r1,r2
112
113 @ FIXME: This is wrong, we are dropping the 's' for now.
114 @ CHECK-FIXME: mvns     r1, r2 @ encoding: [0x02,0x10,0xf0,0xe1]
115         mvns r1,r2
116
117 @ CHECK: rsb    r1, r2, r3 @ encoding: [0x03,0x10,0x62,0xe0]
118         rsb r1,r2,r3
119
120 @ CHECK: rsc    r1, r2, r3 @ encoding: [0x03,0x10,0xe2,0xe0]
121         rsc r1,r2,r3
122
123 @ FIXME: This is broken, CCOut operands don't work correctly when their presence
124 @ may depend on flags.
125 @ CHECK-FIXME:: mlas    r1, r2, r3, r4 @ encoding: [0x92,0x43,0x31,0xe0]
126 @        mlas r1,r2,r3,r4
127
128 @ CHECK: bfi  r0, r0, #5, #7 @ encoding: [0x90,0x02,0xcb,0xe7]
129         bfi  r0, r0, #5, #7
130
131 @ CHECK: bkpt  #10 @ encoding: [0x7a,0x00,0x20,0xe1]
132         bkpt  #10
133
134 @ CHECK: isb @ encoding: [0x6f,0xf0,0x7f,0xf5]
135         isb
136 @ CHECK: mrs  r8, cpsr @ encoding: [0x00,0x80,0x0f,0xe1]
137         mrs  r8, cpsr
138
139 @ CHECK: mcr  p7, #1, r5, c1, c1, #4 @ encoding: [0x91,0x57,0x21,0xee]
140         mcr  p7, #1, r5, c1, c1, #4
141 @ CHECK: mrc  p14, #0, r1, c1, c2, #4 @ encoding: [0x92,0x1e,0x11,0xee]
142         mrc  p14, #0, r1, c1, c2, #4
143 @ CHECK: mcrr  p7, #1, r5, r4, c1 @ encoding: [0x11,0x57,0x44,0xec]
144         mcrr  p7, #1, r5, r4, c1
145 @ CHECK: mrrc  p7, #1, r5, r4, c1 @ encoding: [0x11,0x57,0x54,0xec]
146         mrrc  p7, #1, r5, r4, c1
147
148 @ CHECK: mcr2  p7, #1, r5, c1, c1, #4 @ encoding: [0x91,0x57,0x21,0xfe]
149         mcr2  p7, #1, r5, c1, c1, #4
150 @ CHECK: mrc2  p14, #0, r1, c1, c2, #4 @ encoding: [0x92,0x1e,0x11,0xfe]
151         mrc2  p14, #0, r1, c1, c2, #4
152 @ CHECK: mcrr2  p7, #1, r5, r4, c1 @ encoding: [0x11,0x57,0x44,0xfc]
153         mcrr2  p7, #1, r5, r4, c1
154 @ CHECK: mrrc2  p7, #1, r5, r4, c1 @ encoding: [0x11,0x57,0x54,0xfc]
155         mrrc2  p7, #1, r5, r4, c1
156
157 @ CHECK: cdp  p7, #1, c1, c1, c1, #4 @ encoding: [0x81,0x17,0x11,0xee]
158         cdp  p7, #1, c1, c1, c1, #4
159 @ CHECK: cdp2  p7, #1, c1, c1, c1, #4 @ encoding: [0x81,0x17,0x11,0xfe]
160         cdp2  p7, #1, c1, c1, c1, #4
161
162 @ CHECK: clrex @ encoding: [0x1f,0xf0,0x7f,0xf5]
163         clrex
164
165 @ CHECK: clz  r9, r0 @ encoding: [0x10,0x9f,0x6f,0xe1]
166         clz  r9, r0
167
168 @ CHECK: qadd  r1, r2, r3 @ encoding: [0x52,0x10,0x03,0xe1]
169         qadd  r1, r2, r3
170
171 @ CHECK: qsub  r1, r2, r3 @ encoding: [0x52,0x10,0x23,0xe1]
172         qsub  r1, r2, r3
173
174 @ CHECK: qdadd  r1, r2, r3 @ encoding: [0x52,0x10,0x43,0xe1]
175         qdadd  r1, r2, r3
176
177 @ CHECK: qdsub  r1, r2, r3 @ encoding: [0x52,0x10,0x63,0xe1]
178         qdsub  r1, r2, r3
179
180 @ CHECK: wfe @ encoding: [0x02,0xf0,0x20,0xe3]
181         wfe
182
183 @ CHECK: wfi @ encoding: [0x03,0xf0,0x20,0xe3]
184         wfi
185
186 @ CHECK: yield @ encoding: [0x01,0xf0,0x20,0xe3]
187         yield
188
189 @ CHECK: nop @ encoding: [0x00,0xf0,0x20,0xe3]
190         nop
191
192 @ CHECK: dmb  sy @ encoding: [0x5f,0xf0,0x7f,0xf5]
193         dmb  sy
194
195 @ CHECK: dmb  st @ encoding: [0x5e,0xf0,0x7f,0xf5]
196         dmb  st
197
198 @ CHECK: dmb  ish @ encoding: [0x5b,0xf0,0x7f,0xf5]
199         dmb  ish
200
201 @ CHECK: dmb  ishst @ encoding: [0x5a,0xf0,0x7f,0xf5]
202         dmb  ishst
203
204 @ CHECK: dmb  nsh @ encoding: [0x57,0xf0,0x7f,0xf5]
205         dmb  nsh
206
207 @ CHECK: dmb  nshst @ encoding: [0x56,0xf0,0x7f,0xf5]
208         dmb  nshst
209
210 @ CHECK: dmb  osh @ encoding: [0x53,0xf0,0x7f,0xf5]
211         dmb  osh
212
213 @ CHECK: dmb  oshst @ encoding: [0x52,0xf0,0x7f,0xf5]
214         dmb  oshst
215
216 @ CHECK: dsb  sy @ encoding: [0x4f,0xf0,0x7f,0xf5]
217         dsb  sy
218
219 @ CHECK: dsb  st @ encoding: [0x4e,0xf0,0x7f,0xf5]
220         dsb  st
221
222 @ CHECK: dsb  ish @ encoding: [0x4b,0xf0,0x7f,0xf5]
223         dsb  ish
224
225 @ CHECK: dsb  ishst @ encoding: [0x4a,0xf0,0x7f,0xf5]
226         dsb  ishst
227
228 @ CHECK: dsb  nsh @ encoding: [0x47,0xf0,0x7f,0xf5]
229         dsb  nsh
230
231 @ CHECK: dsb  nshst @ encoding: [0x46,0xf0,0x7f,0xf5]
232         dsb  nshst
233
234 @ CHECK: dsb  osh @ encoding: [0x43,0xf0,0x7f,0xf5]
235         dsb  osh
236
237 @ CHECK: dsb  oshst @ encoding: [0x42,0xf0,0x7f,0xf5]
238         dsb  oshst
239
240 @ CHECK: cpsie  aif @ encoding: [0xc0,0x01,0x08,0xf1]
241         cpsie  aif
242
243 @ CHECK: cps  #15 @ encoding: [0x0f,0x00,0x02,0xf1]
244         cps  #15
245
246 @ CHECK: cpsie  if, #10 @ encoding: [0xca,0x00,0x0a,0xf1]
247         cpsie  if, #10
248
249 @ CHECK: msr  cpsr_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
250         msr  apsr, r0
251
252 @ CHECK: msr  cpsr_s, r0 @ encoding: [0x00,0xf0,0x24,0xe1]
253         msr  apsr_g, r0
254
255 @ CHECK: msr  cpsr_f, r0 @ encoding: [0x00,0xf0,0x28,0xe1]
256         msr  apsr_nzcvq, r0
257
258 @ CHECK: msr  cpsr_fs, r0 @ encoding: [0x00,0xf0,0x2c,0xe1]
259         msr  apsr_nzcvqg, r0
260
261 @ CHECK: msr  cpsr_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
262         msr  cpsr_fc, r0
263
264 @ CHECK: msr  cpsr_c, r0 @ encoding: [0x00,0xf0,0x21,0xe1]
265         msr  cpsr_c, r0
266
267 @ CHECK: msr  cpsr_x, r0 @ encoding: [0x00,0xf0,0x22,0xe1]
268         msr  cpsr_x, r0
269
270 @ CHECK: msr  cpsr_fc, r0 @ encoding: [0x00,0xf0,0x29,0xe1]
271         msr  cpsr_fc, r0
272
273 @ CHECK: msr  cpsr_fsx, r0 @ encoding: [0x00,0xf0,0x2e,0xe1]
274         msr  cpsr_fsx, r0
275
276 @ CHECK: msr  spsr_fc, r0 @ encoding: [0x00,0xf0,0x69,0xe1]
277         msr  spsr_fc, r0
278
279 @ CHECK: msr  spsr_fsxc, r0 @ encoding: [0x00,0xf0,0x6f,0xe1]
280         msr  spsr_fsxc, r0
281
282 @ CHECK: msr  cpsr_fsxc, r0 @ encoding: [0x00,0xf0,0x2f,0xe1]
283         msr  cpsr_fsxc, r0
284