• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# RUN: llvm-mc -triple=thumbv6-apple-darwin -disassemble -show-encoding < %s | FileCheck %s
2
3#------------------------------------------------------------------------------
4# ADC (register)
5#------------------------------------------------------------------------------
6# CHECK: adcs r4, r6
7
80x74 0x41
9
10
11#------------------------------------------------------------------------------
12# ADD (immediate)
13#------------------------------------------------------------------------------
14# CHECK: adds r1, r2, #3
15# CHECK: adds r2, r2, #3
16# CHECK: adds r2, #8
17
180xd1 0x1c
190xd2 0x1c
200x08 0x32
21
22#------------------------------------------------------------------------------
23# ADD (register)
24#------------------------------------------------------------------------------
25# CHECK: adds r1, r2, r3
26# CHECK: add r2, r8
27
280xd1 0x18
290x42 0x44
30
31#------------------------------------------------------------------------------
32# ADD (SP plus immediate)
33#------------------------------------------------------------------------------
34# CHECK: add sp, #508
35# CHECK: add sp, #4
36# CHECK: add r2, sp, #8
37# CHECK: add r2, sp, #1020
38
390x7f 0xb0
400x01 0xb0
410x02 0xaa
420xff 0xaa
43
44
45#------------------------------------------------------------------------------
46# ADD (SP plus register)
47#------------------------------------------------------------------------------
48# CHECK: add sp, r3
49# CHECK: add r2, sp, r2
50
510x9d 0x44
520x6a 0x44
53
54#------------------------------------------------------------------------------
55# ADR
56#------------------------------------------------------------------------------
57# CHECK: adr	r2, #3
580x03 0xa2
59
60#------------------------------------------------------------------------------
61# ASR (immediate)
62#------------------------------------------------------------------------------
63# CHECK: asrs r2, r3, #32
64# CHECK: asrs r2, r3, #5
65# CHECK: asrs r2, r3, #1
66
670x1a 0x10
680x5a 0x11
690x5a 0x10
70
71#------------------------------------------------------------------------------
72# ASR (register)
73#------------------------------------------------------------------------------
74# CHECK: asrs r5, r2
75
760x15 0x41
77
78#------------------------------------------------------------------------------
79# BICS
80#------------------------------------------------------------------------------
81# CHECK: bics r1, r6
82
830xb1 0x43
84
85#------------------------------------------------------------------------------
86# B
87#------------------------------------------------------------------------------
88# CHECK: bls     #128                    @ encoding: [0x40,0xd9]
89# CHECK: beq     #-256                   @ encoding: [0x80,0xd0]
90
910x40 0xd9
920x80 0xd0
93
94#------------------------------------------------------------------------------
95# BKPT
96#------------------------------------------------------------------------------
97# CHECK: bkpt #0
98# CHECK: bkpt #255
99
1000x00 0xbe
1010xff 0xbe
102
103#------------------------------------------------------------------------------
104# BLX (register)
105#------------------------------------------------------------------------------
106# CHECK: blx r4
107
1080xa0 0x47
109
110#------------------------------------------------------------------------------
111# BX
112#------------------------------------------------------------------------------
113# CHECK: bx r2
114
1150x10 0x47
116
117#------------------------------------------------------------------------------
118# CMN
119#------------------------------------------------------------------------------
120# CHECK: cmn r5, r1
121
1220xcd 0x42
123
124#------------------------------------------------------------------------------
125# CMP
126#------------------------------------------------------------------------------
127# CHECK: cmp r6, #32
128# CHECK: cmp r3, r4
129# CHECK: cmp r8, r1
130
1310x20 0x2e
1320xa3 0x42
1330x88 0x45
134
135#------------------------------------------------------------------------------
136# EOR
137#------------------------------------------------------------------------------
138# CHECK: eors r4, r5
139
1400x6c 0x40
141
142#------------------------------------------------------------------------------
143# LDM
144#------------------------------------------------------------------------------
145# CHECK: ldm r3, {r0, r1, r2, r3, r4, r5, r6, r7}
146# CHECK: ldm r2!, {r1, r3, r4, r5, r7}
147# CHECK: ldm r1, {r1}
148
1490xff 0xcb
1500xba 0xca
1510x02 0xc9
152
153
154#------------------------------------------------------------------------------
155# LDR (immediate)
156#------------------------------------------------------------------------------
157# CHECK: ldr r1, [r5]
158# CHECK: ldr r2, [r6, #32]
159# CHECK: ldr r3, [r7, #124]
160# CHECK: ldr r1, [sp]
161# CHECK: ldr r2, [sp, #24]
162# CHECK: ldr r3, [sp, #1020]
163# CHECK: ldr r1, [pc, #12]
164
165
1660x29 0x68
1670x32 0x6a
1680xfb 0x6f
1690x00 0x99
1700x06 0x9a
1710xff 0x9b
1720x03 0x49
173
174#------------------------------------------------------------------------------
175# LDR (register)
176#------------------------------------------------------------------------------
177# CHECK: ldr r1, [r2, r3]
178
1790xd1 0x58
180
181
182#------------------------------------------------------------------------------
183# LDRB (immediate)
184#------------------------------------------------------------------------------
185# CHECK: ldrb r4, [r3]
186# CHECK: ldrb r5, [r6]
187# CHECK: ldrb r6, [r7, #31]
188
1890x1c 0x78
1900x35 0x78
1910xfe 0x7f
192
193
194#------------------------------------------------------------------------------
195# LDRB (register)
196#------------------------------------------------------------------------------
197# CHECK: ldrb r6, [r4, r5]
198
1990x66 0x5d
200
201
202#------------------------------------------------------------------------------
203# LDRH (immediate)
204#------------------------------------------------------------------------------
205# CHECK: ldrh r3, [r3]
206# CHECK: ldrh r4, [r6, #2]
207# CHECK: ldrh r5, [r7, #62]
208
2090x1b 0x88
2100x74 0x88
2110xfd 0x8f
212
213#------------------------------------------------------------------------------
214# LDRH (register)
215#------------------------------------------------------------------------------
216# CHECK: ldrh r6, [r2, r6]
217
2180x96 0x5b
219
220
221#------------------------------------------------------------------------------
222# LDRSB/LDRSH
223#------------------------------------------------------------------------------
224# CHECK: ldrsb r6, [r2, r6]
225# CHECK: ldrsh r3, [r7, r1]
226
2270x96 0x57
2280x7b 0x5e
229
230#------------------------------------------------------------------------------
231# LSL (immediate)
232#------------------------------------------------------------------------------
233# CHECK: movs r4, r5
234# CHECK: lsls r4, r5, #4
235
2360x2c 0x00
2370x2c 0x01
238
239
240#------------------------------------------------------------------------------
241# LSL (register)
242#------------------------------------------------------------------------------
243# CHECK: lsls r2, r6
244
2450xb2 0x40
246
247
248#------------------------------------------------------------------------------
249# LSR (immediate)
250#------------------------------------------------------------------------------
251# CHECK: lsrs r1, r3, #1
252# CHECK: lsrs r1, r3, #32
253
2540x59 0x08
2550x19 0x08
256
257
258#------------------------------------------------------------------------------
259# LSR (register)
260#------------------------------------------------------------------------------
261# CHECK: lsrs r2, r6
262
2630xf2 0x40
264
265#------------------------------------------------------------------------------
266# MOV (immediate)
267#------------------------------------------------------------------------------
268# CHECK: movs r2, #0
269# CHECK: movs r2, #255
270# CHECK: movs r2, #23
271
2720x00 0x22
2730xff 0x22
2740x17 0x22
275
276
277#------------------------------------------------------------------------------
278# MOV (register)
279#------------------------------------------------------------------------------
280# CHECK: mov r3, r4
281# CHECK: movs r1, r3
282
2830x23 0x46
2840x19 0x00
285
286
287#------------------------------------------------------------------------------
288# MUL
289#------------------------------------------------------------------------------
290# CHECK: muls r1, r2, r1
291# CHECK: muls r3, r4
292
2930x51 0x43
2940x63 0x43
295
296
297#------------------------------------------------------------------------------
298# MVN
299#------------------------------------------------------------------------------
300# CHECK: mvns r6, r3
301
3020xde 0x43
303
304#------------------------------------------------------------------------------
305# NEG
306#------------------------------------------------------------------------------
307# CHECK: rsbs r3, r4, #0
308
3090x63 0x42
310
311
312#------------------------------------------------------------------------------
313# NOP
314#------------------------------------------------------------------------------
315# CHECK: nop
316
3170xc0 0x46
318
319
320#------------------------------------------------------------------------------
321# ORR
322#------------------------------------------------------------------------------
323# CHECK: orrs  r3, r4
324
3250x23 0x43
326
327#------------------------------------------------------------------------------
328# POP
329#------------------------------------------------------------------------------
330# CHECK: pop {r2, r3, r6}
331
3320x4c 0xbc
333
334
335#------------------------------------------------------------------------------
336# PUSH
337#------------------------------------------------------------------------------
338# CHECK: push {r1, r2, r7}
339
3400x86 0xb4
341
342
343#------------------------------------------------------------------------------
344# REV/REV16/REVSH
345#------------------------------------------------------------------------------
346# CHECK: rev r6, r3
347# CHECK: rev16 r7, r2
348# CHECK: revsh r5, r1
349
3500x1e 0xba
3510x57 0xba
3520xcd 0xba
353
354
355#------------------------------------------------------------------------------
356# ROR
357#------------------------------------------------------------------------------
358# CHECK: rors r2, r7
359
3600xfa 0x41
361
362#------------------------------------------------------------------------------
363# RSB
364#------------------------------------------------------------------------------
365# CHECK: rsbs r1, r3, #0
366
3670x59 0x42
368
369
370#------------------------------------------------------------------------------
371# SBC
372#------------------------------------------------------------------------------
373# CHECK: sbcs r4, r3
374
3750x9c 0x41
376
377
378#------------------------------------------------------------------------------
379# SETEND
380#------------------------------------------------------------------------------
381# CHECK: setend be
382# CHECK: setend le
383
3840x58 0xb6
3850x50 0xb6
386
387#------------------------------------------------------------------------------
388# STM
389#------------------------------------------------------------------------------
390# CHECK: stm r1!, {r2, r6}
391# CHECK: stm r1!, {r1, r2, r3, r7}
392
3930x44 0xc1
3940x8e 0xc1
395
396
397#------------------------------------------------------------------------------
398# STR (immediate)
399#------------------------------------------------------------------------------
400# CHECK: str r2, [r7]
401# CHECK: str r2, [r7]
402# CHECK: str r5, [r1, #4]
403# CHECK: str r3, [r7, #124]
404# CHECK: str r2, [sp]
405# CHECK: str r3, [sp]
406# CHECK: str r4, [sp, #20]
407# CHECK: str r5, [sp, #1020]
408
4090x3a 0x60
4100x3a 0x60
4110x4d 0x60
4120xfb 0x67
4130x00 0x92
4140x00 0x93
4150x05 0x94
4160xff 0x95
417
418
419#------------------------------------------------------------------------------
420# STR (register)
421#------------------------------------------------------------------------------
422# CHECK: str r2, [r7, r3]
423
4240xfa 0x50
425
426
427#------------------------------------------------------------------------------
428# STRB (immediate)
429#------------------------------------------------------------------------------
430# CHECK: strb r4, [r3]
431# CHECK: strb r5, [r6]
432# CHECK: strb r6, [r7, #31]
433
4340x1c 0x70
4350x35 0x70
4360xfe 0x77
437
438
439#------------------------------------------------------------------------------
440# STRB (register)
441#------------------------------------------------------------------------------
442# CHECK: strb r6, [r4, r5]
443
4440x66 0x55
445
446
447#------------------------------------------------------------------------------
448# STRH (immediate)
449#------------------------------------------------------------------------------
450# CHECK: strh r3, [r3]
451# CHECK: strh r4, [r6, #2]
452# CHECK: strh r5, [r7, #62]
453
4540x1b 0x80
4550x74 0x80
4560xfd 0x87
457
458
459#------------------------------------------------------------------------------
460# STRH (register)
461#------------------------------------------------------------------------------
462# CHECK: strh r6, [r2, r6]
463
4640x96 0x53
465
466
467#------------------------------------------------------------------------------
468# SUB (immediate)
469#------------------------------------------------------------------------------
470# CHECK: subs r1, r2, #3
471# CHECK: subs r2, #3
472# CHECK: subs r2, #8
473
4740xd1 0x1e
4750x03 0x3a
4760x08 0x3a
477
478#------------------------------------------------------------------------------
479# SUB (register)
480#------------------------------------------------------------------------------
481# CHECK: subs r1, r2, r3
482
4830xd1 0x1a
484
485#------------------------------------------------------------------------------
486# SUB (SP minus immediate)
487#------------------------------------------------------------------------------
488# CHECK: sub sp, #12
489# CHECK: sub sp, #508
490
4910x83 0xb0
4920xff 0xb0
493
494#------------------------------------------------------------------------------
495# SVC
496#------------------------------------------------------------------------------
497# CHECK: svc #0
498# CHECK: svc #255
499
5000x00 0xdf
5010xff 0xdf
502
503
504#------------------------------------------------------------------------------
505# SXTB/SXTH
506#------------------------------------------------------------------------------
507# CHECK: sxtb r3, r5
508# CHECK: sxth r3, r5
509
5100x6b 0xb2
5110x2b 0xb2
512
513
514#------------------------------------------------------------------------------
515# TST
516#------------------------------------------------------------------------------
517# CHECK: tst r6, r1
518
5190x0e 0x42
520
521
522#------------------------------------------------------------------------------
523# UXTB/UXTH
524#------------------------------------------------------------------------------
525# CHECK: uxtb  r7, r2
526# CHECK: uxth  r1, r4
527
5280xd7 0xb2
5290xa1 0xb2
530