1# RUN: llvm-mc --disassemble %s -triple=armv7-apple-darwin9 -mcpu=cortex-a9-mp | FileCheck %s
2
3# CHECK:	addpl	r4, pc, #318767104
40x4c 0x45 0x8f 0x52
5
6# CHECK:	b	#0
70x00 0x00 0x00 0xea
8
9# CHECK:	bl	#7732
100x8d 0x07 0x00 0xeb
11
12# CHECK:	bleq	#-4
130xff 0xff 0xff 0x0b
14
15# CHECK:	bfc	r8, #0, #16
160x1f 0x80 0xcf 0xe7
17
18# CHECK:	bfi	r8, r0, #16, #1
190x10 0x88 0xd0 0xe7
20
21# CHECK:	mov	pc, lr
220x0e 0xf0 0xa0 0xe1
23
24# CHECK:	mov	pc, #3221225535
250xff 0xf1 0xa0 0xe3
26
27# CHECK:	movw	r7, #4096
280x00 0x70 0x01 0xe3
29
30# CHECK:	cmn	r0, #1
310x01 0x00 0x70 0xe3
32
33# CHECK:	dmb
340x5f 0xf0 0x7f 0xf5
35
36# CHECK:	dmb	nshst
370x56 0xf0 0x7f 0xf5
38
39# CHECK:	dsb
400x4f 0xf0 0x7f 0xf5
41
42# CHECK:	dsb	st
430x4e 0xf0 0x7f 0xf5
44
45# CHECK:	isb
460x6f 0xf0 0x7f 0xf5
47
48# FIXME: LDC encoding information is incorrect. Re-enable this along with more
49# robust testing for other values when we get it fleshed out and working
50# properly.
51# CHECKx:	ldclvc	p5, cr15, [r8], #-0
52#0x00 0xf5 0x78 0x7c
53
54# CHECK:        ldc     p13, c9, [r2, #0]!
550x00 0x9d 0xb2 0xed
56
57# CHECK:        ldcl    p1, c9, [r3, #0]!
580x00 0x91 0xf3 0xed
59
60# CHECK:	ldr	r0, [r2], #15
610x0f 0x00 0x92 0xe4
62
63# CHECK:	ldr	r5, [r7, -r10, lsl #2]
640x0a 0x51 0x17 0xe7
65
66# CHECK:        ldr     r4, [r5, #0]!
670x00 0x40 0xb5 0xe5
68
69# CHECK:        ldrb    lr, [r10, #0]!
700x00 0xe0 0xfa 0xe5
71
72# CHECK:	ldrd	r4, r5, [r0, #0]!
730xd0 0x40 0xe0 0xe1
74
75# CHECK:	ldrh	r0, [r2], #0
760xb0 0x00 0xd2 0xe0
77
78# CHECK:	ldrh	r0, [r2]
790xb0 0x00 0xd2 0xe1
80
81# CHECK:	ldrh    lr, [sp, #0]!
820xb0 0xe0 0xfd 0xe1
83
84# CHECK:	ldrht	r0, [r2], #15
850xbf 0x00 0xf2 0xe0
86
87# CHECK:        ldrsb   r1, [lr, #0]!
880xd0 0x10 0xfe 0xe1
89
90# CHECK:	ldrsbtvs	lr, [r2], -r9
910xd9 0xe0 0x32 0x60
92
93# CHECK:        ldrsh   r9, [r1, #0]
940xf0 0x90 0xf1 0xe1
95
96# CHECK:	lsls	r0, r2, #31
970x82 0x0f 0xb0 0xe1
98
99# CHECK:	mcr2	p0, #0, r2, c1, c0, #7
1000xf0 0x20 0x01 0xfe
101
102# CHECK:	movt	r8, #65535
1030xff 0x8f 0x4f 0xe3
104
105# CHECK:	mvnspl	r7, #1073741885
1060xf5 0x71 0xf0 0x53
107
108# CHECK-NOT:	orr	r7, r8, r7, rrx #0
109# CHECK:	orr	r7, r8, r7, rrx
1100x67 0x70 0x88 0xe1
111
112# CHECK:	pkhbt	r8, r9, r10, lsl #4
1130x1a 0x82 0x89 0xe6
114
115# CHECK-NOT:	pkhbtls	r10, r11, r11, lsl #0
116# CHECK:	pkhbtls	r10, r11, r11
1170x1b 0xa0 0x8b 0x96
118
119# CHECK:	pkhtbmi	lr, r1, r6, asr #21
1200xd6 0xea 0x81 0x46
121
122# CHECK:	pop	{r0, r2, r4, r6, r8, r10}
1230x55 0x05 0xbd 0xe8
124
125# CHECK:	push	{r0, r2, r4, r6, r8, r10}
1260x55 0x05 0x2d 0xe9
127
128# CHECK:	qsax	r8, r9, r10
1290x5a 0x8f 0x29 0xe6
130
131# CHECK:	rfedb	r0!
1320x00 0x0a 0x30 0xf9
133
134# CHECK:        srsdb sp!, #19
1350x13 0x05 0x6d 0xf9
136
137# CHECK: srsia sp, #9
1380x09 0x05 0xcd 0xf8
139
140# CHECK-NOT:	rsbeq	r0, r2, r0, lsl #0
141# CHECK:	rsbeq	r0, r2, r0
1420x00 0x00 0x62 0x00
143
144# CHECK-NOT:	rscseq	r0, r0, r1, lsl #0
145# CHECK:	rscseq	r0, r0, r1
1460x01 0x00 0xf0 0x00
147
148# CHECK:	sbcs	r0, pc, #1
1490x01 0x00 0xdf 0xe2
150
151# CHECK:	sbfx	r0, r1, #0, #8
1520x51 0x00 0xa7 0xe7
153
154# CHECK:	ssat	r8, #1, r10, lsl #8
1550x1a 0x84 0xa0 0xe6
156
157# CHECK-NOT:	ssatmi	r0, #17, r12, lsl #0
158# CHECK:	ssatmi	r0, #17, r12
1590x1c 0x00 0xb0 0x46
160
161# CHECK:	stmdb	r10!, {r4, r5, r6, r7, lr}
1620xf0 0x40 0x2a 0xe9
163
164# CHECK:	teq	r0, #31
1650x1f 0x00 0x30 0xe3
166
167# CHECK:	ubfx	r0, r0, #16, #1
1680x50 0x08 0xe0 0xe7
169
170# CHECK:	usat	r8, #0, r10, asr #32
1710x5a 0x80 0xe0 0xe6
172
173# CHECK:        setend be
1740x00 0x02 0x01 0xf1
175
176# CHECK:        setend le
1770x00 0x00 0x01 0xf1
178
179# CHECK: cpsie  aif
1800xc0 0x01 0x08 0xf1
181
182# CHECK: cps  #15
1830x0f 0x00 0x02 0xf1
184
185# CHECK: cpsie if, #10
1860xca 0x00 0x0a 0xf1
187
188# CHECK: msr CPSR_fc, r0
1890x00 0xf0 0x29 0xe1
190
191# CHECK:	msrmi	CPSR_c, #4043309056
1920xf1 0xf4 0x21 0x43
193
194# CHECK: rsbs r6, r7, r8
1950x08 0x60 0x77 0xe0
196
197# CHECK: blxeq r5
1980x35 0xff 0x2f 0x01
199
200# CHECK: bx r12
2010x1c 0xff 0x2f 0xe1
202
203# CHECK: bxeq r5
2040x15 0xff 0x2f 0x01
205
206# CHECK:	uqadd16mi	r6, r11, r8
2070x18 0x6F 0x6b 0x46
208
209# CHECK:	str	r0, [sp, #4]
2100x04 0x00 0x8d 0xe5
211
212# CHECK:	str	r1, [sp]
2130x00 0x10 0x8d 0xe5
214
215# CHECK:	ldr	r3, [pc, #144]
2160x90 0x30 0x9f 0xe5
217
218# CHECK:	ldr	r3, [r0, #-4]
2190x4 0x30 0x10 0xe5
220
221# CHECK:	ldr	r5, [sp, r0, lsl #1]!
2220x80 0x50 0xbd 0xe7
223
224# CHECK:	ldr	r5, [r7], -r0, lsr #2
2250x20 0x51 0x17 0xe6
226
227# CHECK:	strdeq	r2, r3, [r0], -r8
2280xf8 0x20 0x00 0x00
229
230# CHECK:	ldrdeq	r2, r3, [r0], -r12
2310xdc 0x24 0x00 0x00
232
233# CHECK:	ldrbt	r3, [r4], -r5, lsl #12
2340x05 0x36 0x74 0xe6
235
236# CHECK:	vcmpe.f64	d8, #0
2370xc0 0x8b 0xb5 0xee
238
239# CHECK:	vldmdb	r2!, {s7, s8, s9, s10, s11}
2400x05 0x3a 0x72 0xed
241
242# CHECK:	vldr	s23, [r2, #660]
2430xa5 0xba 0xd2 0xed
244
245# CHECK:	strtvc	r5, [r3], r0, lsr #20
2460x20 0x5a 0xa3 0x76
247
248# CHECK:	stmiblo	sp, {r0, r4, r8, r11, r12, pc}
2490x11 0x99 0x8d 0x39
250
251# CHECK:	ldmdb	sp, {r0, r4, r8, r11, r12, pc}
2520x11 0x99 0x1d 0xe9
253
254# CHECK:	swpge	r3, r2, [r6]
2550x92 0x30 0x06 0xa1
256
257# CHECK:	umull	r1, r2, r3, r4
2580x93 0x14 0x82 0xe0
259
260# CHECK:	pldw	[pc, #-0]
2610x00 0xf0 0x1f 0xf5
262
263# CHECK:	pli	[pc, #-0]
2640x00 0xf0 0x5f 0xf4
265
266# CHECK:	pli	[r3, r1, lsl #2]
2670x01 0xf1 0xd3 0xf6
268
269# CHECK:	stc	p2, c4, [r9], {157}
2700x9d 0x42 0x89 0xec
271
272# CHECK:        stc     p15, c0, [r3, #0]!
2730x00 0x0f 0xa3 0xed
274
275# CHECK:	stc2	p2, c4, [r9], {157}
2760x9d 0x42 0x89 0xfc
277
278# CHECK:	stcl    p13, c12, [r9, #0]!
2790x00 0xcd 0xe9 0xed
280
281# CHECK:        str     pc, [r11, #0]!
2820x00 0xf0 0xab 0xe5
283
284# CHECK:        strb    r9, [r10, #0]!
2850x00 0x90 0xea 0xe5
286
287# CHECK:        strd    r12, sp, [r6, #0]!
2880xf0 0xc0 0xe6 0xe1
289
290# CHECK:        strh    r7, [r9, #0]!
2910xb0 0x70 0xe9 0xe1
292
293# CHECK:	bne #-24
2940xfa 0xff 0xff 0x1a
295
296# CHECK:	blx	#60
2970x0f 0x00 0x00 0xfa
298
299# CHECK-NOT:	adcs	r10, r8, r0, asr #6
300# CHECK:	adcshi	r10, r8, r0, asr #6
3010x40 0xa3 0xb8 0x80
302
303# CHECK:	adcshi	r10, r8, r0, asr r3
3040x50 0xa3 0xb8 0x80
305
306# CHECK:	streq	r1, [sp], #-1567
3070x1f 0x16 0xd 0x4
308
309# CHECK:	mrchs	p2, #3, r11, c13, c6, #6
3100xd6 0xb2 0x7d 0x2e
311
312# CHECK:	smlsldx	r4, r12, r11, r4
3130x7b 0x44 0x4c 0xe7
314
315# CHECK:	lsl	r3, r2, r1
3160x12 0x31 0xa0 0xe1
317
318# CHECK:	sxtab	r9, r8, r5
3190x75 0x90 0xa8 0xe6
320
321# CHECK:	sxtb	r9, r5, ror #8
3220x75 0x94 0xaf 0xe6
323
324# CHECK:	bfc	r5, #0, #16
3250x1f 0x50 0xcf 0xe7
326
327# CHECK:	bfi	r5, r6, #0, #16
3280x16 0x50 0xcf 0xe7
329
330# CHECK:	sbfx	r5, r6, #8, #8
3310x56 0x54 0xa7 0xe7
332
333# CHECK:	rsb	pc, r5, r0
3340x00 0xf0 0x65 0xe0
335
336# CHECK:	uqadd8	r5, r6, r7
3370x97 0x5f 0x66 0xe6
338
339# CHECK:	uqsax	r5, r6, r7
3400x57 0x5f 0x66 0xe6
341
342# CHECK:	smmlareq	r0, r0, r0, r0
3430x30 0x00 0x50 0x07
344
345# CHECK:	nop
3460x00 0xf0 0x20 0xe3
347
348# CHECK:        andeq   r0, r0, r0, lsr #32
3490x20 0x00 0x00 0x00
350
351# CHECK: strb	r3, [r2], #1
3520x01 0x30 0xc2 0xe4
353
354# CHECK:         strheq  r0, [r0, -r0]
3550xb0 0x00 0x00 0x01
356
357# CHECK: rfedb	#4!
3580x14 0x0 0x32 0xf9
359
360# CHECK: stc2l	p0, c0, [r2], #-96
3610x18 0x0 0x62 0xfc
362
363# CHECK: ldmgt	sp!, {r9}
3640x00 0x02 0xbd 0xc8
365