Fix assembly/disassembly of Thumb2 ADR instructions with immediate operands.
[oota-llvm.git] / test / MC / Disassembler / ARM / thumb2.txt
1 # RUN: llvm-mc -triple=thumbv7-apple-darwin -disassemble < %s | FileCheck %s
2
3 #------------------------------------------------------------------------------
4 # ADC (immediate)
5 #------------------------------------------------------------------------------
6 # CHECK: adc r0, r1, #4
7 # CHECK: adcs r0, r1, #0
8 # CHECK: adc r1, r2, #255
9 # CHECK: adc r3, r7, #5570645
10 # CHECK: adc r8, r12, #2852170240
11 # CHECK: adc r9, r7, #2779096485
12 # CHECK: adc r5, r3, #2264924160
13 # CHECK: adc r4, r2, #2139095040
14 # CHECK: adc r4, r2, #1664
15
16 0x41 0xf1 0x04 0x00
17 0x51 0xf1 0x00 0x00
18 0x42 0xf1 0xff 0x01
19 0x47 0xf1 0x55 0x13
20 0x4c 0xf1 0xaa 0x28
21 0x47 0xf1 0xa5 0x39
22 0x43 0xf1 0x07 0x45
23 0x42 0xf1 0xff 0x44
24 0x42 0xf5 0xd0 0x64
25
26 #------------------------------------------------------------------------------
27 # ADC (register)
28 #------------------------------------------------------------------------------
29 # CHECK: adc.w r4, r5, r6
30 # CHECK: adcs.w r4, r5, r6
31 # CHECK: adc.w r9, r1, r3
32 # CHECK: adcs.w r9, r1, r3
33 # CHECK: adc.w r0, r1, r3, ror #4
34 # CHECK: adcs.w  r0, r1, r3, lsl #7
35 # CHECK: adc.w r0, r1, r3, lsr #31
36 # CHECK: adcs.w  r0, r1, r3, asr #32
37
38 0x45 0xeb 0x06 0x04
39 0x55 0xeb 0x06 0x04
40 0x41 0xeb 0x03 0x09
41 0x51 0xeb 0x03 0x09
42 0x41 0xeb 0x33 0x10
43 0x51 0xeb 0xc3 0x10
44 0x41 0xeb 0xd3 0x70
45 0x51 0xeb 0x23 0x00
46
47
48 #------------------------------------------------------------------------------
49 # ADD (immediate)
50 #------------------------------------------------------------------------------
51 # CHECK: itet eq
52 # CHECK: addeq r1, r2, #4
53 # CHECK: addwne r5, r3, #1023
54 # CHECK: addweq r4, r5, #293
55 # CHECK: add.w r2, sp, #1024
56 # CHECK: add.w r2, r8, #65280
57 # CHECK: addw r2, r3, #257
58 # CHECK: add.w r12, r6, #256
59 # CHECK: addw r12, r6, #256
60 # CHECK: adds.w r1, r2, #496
61
62 0x0a 0xbf
63 0x11 0x1d
64 0x03 0xf2 0xff 0x35
65 0x05 0xf2 0x25 0x14
66 0x0d 0xf5 0x80 0x62
67 0x08 0xf5 0x7f 0x42
68 0x03 0xf2 0x01 0x12
69 0x06 0xf5 0x80 0x7c
70 0x06 0xf2 0x00 0x1c
71 0x12 0xf5 0xf8 0x71
72
73
74 #------------------------------------------------------------------------------
75 # ADD (register)
76 #------------------------------------------------------------------------------
77 # CHECK: add.w r1, r2, r8
78 # CHECK: add.w r5, r9, r2, asr #32
79 # CHECK: adds.w r7, r3, r1, lsl #31
80 # CHECK: adds.w r0, r3, r6, lsr #25
81 # CHECK: add.w r4, r8, r1, ror #12
82
83 0x02 0xeb 0x08 0x01
84 0x09 0xeb 0x22 0x05
85 0x13 0xeb 0xc1 0x77
86 0x13 0xeb 0x56 0x60
87 0x08 0xeb 0x31 0x34
88
89
90 #------------------------------------------------------------------------------
91 # ADR
92 #------------------------------------------------------------------------------
93 # CHECK: subw r11, pc, #3270
94 # CHECK: subw r11, pc, #826
95
96 0xaf 0xf6 0xc6 0x4b
97 0xaf 0xf2 0x3a 0x3b
98
99 #------------------------------------------------------------------------------
100 # AND (immediate)
101 #------------------------------------------------------------------------------
102 # CHECK: and r2, r5, #1044480
103 # CHECK: ands r3, r12, #15
104 # CHECK: and r1, r1, #255
105
106 0x05 0xf4 0x7f 0x22
107 0x1c 0xf0 0x0f 0x03
108 0x01 0xf0 0xff 0x01
109
110
111 #------------------------------------------------------------------------------
112 # AND (register)
113 #------------------------------------------------------------------------------
114 # CHECK: and.w r4, r9, r8
115 # CHECK: and.w r1, r4, r8, asr #3
116 # CHECK: ands.w r2, r1, r7, lsl #1
117 # CHECK: ands.w r4, r5, r2, lsr #20
118 # CHECK: and.w r9, r12, r1, ror #17
119
120 0x09 0xea 0x08 0x04
121 0x04 0xea 0xe8 0x01
122 0x11 0xea 0x47 0x02
123 0x15 0xea 0x12 0x54
124 0x0c 0xea 0x71 0x49
125
126 #------------------------------------------------------------------------------
127 # ASR (immediate)
128 #------------------------------------------------------------------------------
129 # CHECK: asr.w r2, r3, #12
130 # CHECK: asrs.w r8, r3, #32
131 # CHECK: asrs.w r2, r3, #1
132 # CHECK: asr.w r2, r3, #4
133 # CHECK: asrs.w r2, r12, #15
134
135 # CHECK: asr.w r3, r3, #19
136 # CHECK: asrs.w r8, r8, #2
137 # CHECK: asrs.w r7, r7, #5
138 # CHECK: asr.w r12, r12, #21
139
140 0x4f 0xea 0x23 0x32
141 0x5f 0xea 0x23 0x08
142 0x5f 0xea 0x63 0x02
143 0x4f 0xea 0x23 0x12
144 0x5f 0xea 0xec 0x32
145
146 0x4f 0xea 0xe3 0x43
147 0x5f 0xea 0xa8 0x08
148 0x5f 0xea 0x67 0x17
149 0x4f 0xea 0x6c 0x5c
150
151
152 #------------------------------------------------------------------------------
153 # ASR (register)
154 #------------------------------------------------------------------------------
155 # CHECK: asr.w r3, r4, r2
156 # CHECK: asr.w r1, r1, r2
157 # CHECK: asrs.w r3, r4, r8
158
159 0x44 0xfa 0x02 0xf3
160 0x41 0xfa 0x02 0xf1
161 0x54 0xfa 0x08 0xf3
162
163 #------------------------------------------------------------------------------
164 # B
165 #------------------------------------------------------------------------------
166 # CHECK: bmi.w   #-183396
167
168 0x13 0xf5 0xce 0xa9
169
170
171 #------------------------------------------------------------------------------
172 # BFC
173 #------------------------------------------------------------------------------
174 # CHECK: bfc r5, #3, #17
175 # CHECK: it lo
176 # CHECK: bfclo r5, #3, #17
177
178 0x6f 0xf3 0xd3 0x05
179 0x38 0xbf
180 0x6f 0xf3 0xd3 0x05
181
182
183 #------------------------------------------------------------------------------
184 # BFI
185 #------------------------------------------------------------------------------
186 # CHECK: bfi r5, r2, #3, #17
187 # CHECK: it ne
188 # CHECK: bfine r5, r2, #3, #17
189
190 0x62 0xf3 0xd3 0x05
191 0x18 0xbf
192 0x62 0xf3 0xd3 0x05
193
194
195 #------------------------------------------------------------------------------
196 # BIC
197 #------------------------------------------------------------------------------
198 # CHECK: bic r10, r1, #15
199 # CHECK: bic.w r12, r3, r6
200 # CHECK: bic.w r11, r2, r6, lsl #12
201 # CHECK: bic.w r8, r4, r1, lsr #11
202 # CHECK: bic.w r7, r5, r7, lsr #15
203 # CHECK: bic.w r6, r7, r9, asr #32
204 # CHECK: bic.w r5, r6, r8, ror #1
205
206 # CHECK: bic r1, r1, #15
207 # CHECK: bic.w r1, r1, r1
208 # CHECK: bic.w r4, r4, r2, lsl #31
209 # CHECK: bic.w r6, r6, r3, lsr #12
210 # CHECK: bic.w r7, r7, r4, lsr #7
211 # CHECK: bic.w r8, r8, r5, asr #15
212 # CHECK: bic.w r12, r12, r6, ror #29
213
214 0x21 0xf0 0x0f 0x0a
215 0x23 0xea 0x06 0x0c
216 0x22 0xea 0x06 0x3b
217 0x24 0xea 0xd1 0x28
218 0x25 0xea 0xd7 0x37
219 0x27 0xea 0x29 0x06
220 0x26 0xea 0x78 0x05
221
222 0x21 0xf0 0x0f 0x01
223 0x21 0xea 0x01 0x01
224 0x24 0xea 0xc2 0x74
225 0x26 0xea 0x13 0x36
226 0x27 0xea 0xd4 0x17
227 0x28 0xea 0xe5 0x38
228 0x2c 0xea 0x76 0x7c
229
230
231 #------------------------------------------------------------------------------
232 # BXJ
233 #------------------------------------------------------------------------------
234 # CHECK: bxj r5
235 # CHECK: it ne
236 # CHECK: bxjne r7
237
238 0xc5 0xf3 0x00 0x8f
239 0x18 0xbf
240 0xc7 0xf3 0x00 0x8f
241
242
243 #------------------------------------------------------------------------------
244 # CBZ/CBNZ
245 #------------------------------------------------------------------------------
246 # CHECK: cbnz    r7, #6
247 # CHECK: cbnz    r7, #12
248
249 0x1f 0xb9
250 0x37 0xb9
251
252 #------------------------------------------------------------------------------
253 # CDP/CDP2
254 #------------------------------------------------------------------------------
255 # CHECK: cdp  p7, #1, c1, c1, c1, #4
256 # CHECK: cdp2  p7, #1, c1, c1, c1, #4
257
258 0x11 0xee 0x81 0x17
259 0x11 0xfe 0x81 0x17
260
261
262 #------------------------------------------------------------------------------
263 # CLREX
264 #------------------------------------------------------------------------------
265 #CHECK: clrex
266 #CHECK: it ne
267 #CHECK: clrexne
268
269 0xbf 0xf3 0x2f 0x8f
270 0x18 0xbf
271 0xbf 0xf3 0x2f 0x8f
272
273
274 #------------------------------------------------------------------------------
275 # CLZ
276 #------------------------------------------------------------------------------
277 #CHECK: clz r1, r2
278 #CHECK: it eq
279 #CHECK: clzeq r1, r2
280
281 0xb2 0xfa 0x82 0xf1
282 0x08 0xbf
283 0xb2 0xfa 0x82 0xf1
284
285
286 #------------------------------------------------------------------------------
287 # CMN
288 #------------------------------------------------------------------------------
289 #CHECK: cmn.w r1, #15
290 #CHECK: cmn.w r8, r6
291 #CHECK: cmn.w r1, r6, lsl #10
292 #CHECK: cmn.w r1, r6, lsr #10
293 #CHECK: cmn.w sp, r6, lsr #10
294 #CHECK: cmn.w r1, r6, asr #10
295 #CHECK: cmn.w r1, r6, ror #10
296
297 0x11 0xf1 0x0f 0x0f
298 0x18 0xeb 0x06 0x0f
299 0x11 0xeb 0x86 0x2f
300 0x11 0xeb 0x96 0x2f
301 0x1d 0xeb 0x96 0x2f
302 0x11 0xeb 0xa6 0x2f
303 0x11 0xeb 0xb6 0x2f
304
305
306 #------------------------------------------------------------------------------
307 # CMP
308 #------------------------------------------------------------------------------
309 #CHECK: cmp.w r5, #65280
310 #CHECK: cmp.w r4, r12
311 #CHECK: cmp.w r9, r6, lsl #12
312 #CHECK: cmp.w r3, r7, lsr #31
313 #CHECK: cmp.w sp, r6, lsr #1
314 #CHECK: cmp.w r2, r5, asr #24
315 #CHECK: cmp.w r1, r4, ror #15
316
317 0xb5 0xf5 0x7f 0x4f
318 0xb4 0xeb 0x0c 0x0f
319 0xb9 0xeb 0x06 0x3f
320 0xb3 0xeb 0xd7 0x7f
321 0xbd 0xeb 0x56 0x0f
322 0xb2 0xeb 0x25 0x6f
323 0xb1 0xeb 0xf4 0x3f
324
325
326 #------------------------------------------------------------------------------
327 # DBG
328 #------------------------------------------------------------------------------
329 #CHECK: dbg #5
330 #CHECK: dbg #0
331 #CHECK: dbg #15
332
333 0xaf 0xf3 0xf5 0x80
334 0xaf 0xf3 0xf0 0x80
335 0xaf 0xf3 0xff 0x80
336
337
338 #------------------------------------------------------------------------------
339 # DMB
340 #------------------------------------------------------------------------------
341 #CHECK: dmb sy
342 #CHECK: dmb st
343 #CHECK: dmb ish
344 #CHECK: dmb ishst
345 #CHECK: dmb nsh
346 #CHECK: dmb nshst
347 #CHECK: dmb osh
348 #CHECK: dmb oshst
349 #CHECK: dmb
350
351 0xbf 0xf3 0x5f 0x8f
352 0xbf 0xf3 0x5e 0x8f
353 0xbf 0xf3 0x5b 0x8f
354 0xbf 0xf3 0x5a 0x8f
355 0xbf 0xf3 0x57 0x8f
356 0xbf 0xf3 0x56 0x8f
357 0xbf 0xf3 0x53 0x8f
358 0xbf 0xf3 0x52 0x8f
359 0xbf 0xf3 0x5f 0x8f
360
361
362 #------------------------------------------------------------------------------
363 # DSB
364 #------------------------------------------------------------------------------
365 #CHECK: dsb sy
366 #CHECK: dsb st
367 #CHECK: dsb ish
368 #CHECK: dsb ishst
369 #CHECK: dsb nsh
370 #CHECK: dsb nshst
371 #CHECK: dsb osh
372 #CHECK: dsb oshst
373
374 0xbf 0xf3 0x4f 0x8f
375 0xbf 0xf3 0x4e 0x8f
376 0xbf 0xf3 0x4b 0x8f
377 0xbf 0xf3 0x4a 0x8f
378 0xbf 0xf3 0x47 0x8f
379 0xbf 0xf3 0x46 0x8f
380 0xbf 0xf3 0x43 0x8f
381 0xbf 0xf3 0x42 0x8f
382
383
384 #------------------------------------------------------------------------------
385 # EOR
386 #------------------------------------------------------------------------------
387 #CHECK: eor r4, r5, #61440
388 #CHECK: eor.w r4, r5, r6
389 #CHECK: eor.w r4, r5, r6, lsl #5
390 #CHECK: eor.w r4, r5, r6, lsr #5
391 #CHECK: eor.w r4, r5, r6, lsr #5
392 #CHECK: eor.w r4, r5, r6, asr #5
393 #CHECK: eor.w r4, r5, r6, ror #5
394
395 0x85 0xf4 0x70 0x44
396 0x85 0xea 0x06 0x04
397 0x85 0xea 0x46 0x14
398 0x85 0xea 0x56 0x14
399 0x85 0xea 0x56 0x14
400 0x85 0xea 0x66 0x14
401 0x85 0xea 0x76 0x14
402
403
404 #------------------------------------------------------------------------------
405 # ISB
406 #------------------------------------------------------------------------------
407 #CHECK: isb sy
408
409 0xbf 0xf3 0x6f 0x8f
410
411 #------------------------------------------------------------------------------
412 # IT
413 #------------------------------------------------------------------------------
414 # Test encodings of a few full IT blocks, not just the IT instruction
415
416 # CHECK: iteet eq
417 # CHECK: addeq r0, r1, r2
418 # CHECK: nopne
419 # CHECK: subne r5, r6, r7
420 # CHECK: addeq r1, r2, #4
421
422 0x0d 0xbf
423 0x88 0x18
424 0x00 0xbf
425 0xf5 0x1b
426 0x11 0x1d
427
428 # CHECK: ittee ls
429 # CHECK: addls r0, r1, r2
430 # CHECK: nopls
431 # CHECK: subhi r5, r6, r7
432 # CHECK: addhi r1, r2, #4
433
434 0x99 0xbf
435 0x88 0x18
436 0x00 0xbf
437 0xf5 0x1b
438 0x11 0x1d