# RUN: llvm-mc --disassemble --show-encoding %s -triple=thumbv7-apple-darwin9 -mcpu=cortex-a9 | FileCheck %s

# CHECK:	add	r5, sp, #68
0x11 0xad

# CHECK:	adcs	r0, r0, #1
0x50 0xf1 0x01 0x00

# CHECK:	b	#30
0x0f 0xe0

# CHECK:	bgt.w	#-16
0x3f 0xf7 0xf8 0xaf

# CHECK:	bfc	r0, #10, #10
0x6f 0xf3 0x93 0x20

# CHECK:	bfi	r2, r10, #0, #1
0x6a 0xf3 0x00 0x02

# CHECK:	cbnz	r7, #20
0x57 0xb9

# CHECK:	cmp	r3, r4
0xa3 0x42

# CHECK:	cmn.w	r0, #31
0x10 0xf1 0x1f 0x0f

# CHECK:	ldm	r0!, {r1}
0x02 0xc8

# CHECK:	ldr	r5, [pc, #432]
0x6c 0x4d

# CHECK:	str	r0, [r3]
0x18 0x60

# CHECK:	str	r0, [r3, #4]
0x58 0x60

# CHECK:	str	r2, [r5, r3]
0xea 0x50

# CHECK:	ldrb.w	r8, [pc, #-24]
0x1f 0xf8 0x18 0x80

# CHECK:	ldrd	r0, r1, [r7, #64]!
0xf7 0xe9 0x10 0x01

# CHECK:	lsls.w	r0, r5, #1
0x5f 0xea 0x45 0x00

# CHECK:	mov	r11, r7
0xbb 0x46

# CHECK:	pkhtb	r2, r4, r6, asr #16
0xc4 0xea 0x26 0x42

# CHECK-NOT:	pkhbt	r2, r4, r6, lsl #0
# CHECK:	pkhbt	r2, r4, r6
0xc4 0xea 0x06 0x02

# CHECK:	pop.w	{r2, r4, r6, r8, r10, r12}
0xbd 0xe8 0x54 0x15

# CHECK:	push.w	{r2, r4, r6, r8, r10, r12}
0x2d 0xe9 0x54 0x15

# CHECK:	rsbs	r0, r0, #0
0x40 0x42

# CHECK-NOT:	rsb	r0, r2, r0, lsl #0
# CHECK:	rsb	r0, r2, r0
0xc2 0xeb 0x00 0x00

# CHECK-NOT:	ssat	r0, #17, r12, lsl #0
# CHECK:	ssat	r0, #17, r12
0x0c 0xf3 0x10 0x00

# CHECK:	strd	r0, r1, [r7, #64]
0xc7 0xe9 0x10 0x01

# CHECK:	sub	sp, #60
0x8f 0xb0

# CHECK:	adr.w r0, #-1
0xaf 0xf2 0x01 0x00

# CHECK:	subw	r0, pc, #0
0xaf 0xf2 0x00 0x00

# CHECK:	subw	r0, sp, #835
0xad 0xf2 0x43 0x30

# CHECK:	uqadd16	r3, r4, r5
0x94 0xfa 0x55 0xf3

# CHECK:	usada8	r5, r4, r3, r2
0x74 0xfb 0x03 0x25

# CHECK:	uxtab16	r1, r2, r3, ror #8
0x32 0xfa 0x93 0xf1

# IT block begin
# CHECK:	ittte	eq
0x03 0xbf

# CHECK:	moveq	r3, #3
0x03 0x23

# CHECK:	asreq	r1, r0, #5
0x41 0x11

# CHECK:	lsleq	r1, r0, #28
0x01 0x07

# CHECK:	stmne	r0!, {r1, r2, r3}
0x0e 0xc0

# IT block end
# CHECK:	rsbs	r1, r2, #0
0x51 0x42

# CHECK: cpsid.w  f
0xaf 0xf3 0x20 0x86

# CHECK: cps  #15
0xaf 0xf3 0x0f 0x81

# CHECK: cpsie  if, #10
0xaf 0xf3 0x6a 0x85

# CHECK: cpsie aif
0x67 0xb6

# CHECK: msr CPSR_fc, r0
0x80 0xf3 0x00 0x89

# CHECK: blx	#-4
0xff 0xf7 0xfe 0xef

# CHECK:	vpush	{d8, d9, d10}
0x2d 0xed 0x06 0x8b

# CHECK:	vcmpe.f64	d8, #0
0xb5 0xee 0xc0 0x8b

# CHECK:	stmdb	sp, {r0, r2, r3, r8, r11, lr}
0x0d 0xe9 0x0d 0x49

# CHECK:	stm	r5!, {r0, r1, r2, r3, r4}
0x1f 0xc5

# CHECK:	ldm	r5, {r0, r1, r2, r3, r4, r5}
0x3f 0xcd

# CHECK:	ldm	r5!, {r0, r1, r2, r3, r4}
0x1f 0xcd

# CHECK:	adr.w r0, #1050
0x0f 0xf2 0x1a 0x40

# CHECK:	ldrd	r3, r8, [r11, #-60]
0x5b 0xe9 0x0f 0x38

# CHECK:	ldrex	r8, [r2]
0x52 0xe8 0x00 0x8f

# CHECK:	ldrexd	r8, r9, [r2]
0xd2 0xe8 0x7f 0x89

# CHECK:	strexd	r1, r7, r8, [r2]
0xc2 0xe8 0x71 0x78

# CHECK:	tbh	[r5, r4, lsl #1]
0xd5 0xe8 0x14 0xf0

# CHECK:	tbb	[r5, r4]
0xd5 0xe8 0x04 0xf0

# CHECK:	ldr.w	r4, [sp, r4, lsl #3]
0x5d 0xf8 0x34 0x40

# CHECK:	ldr.w	r5, [r6, #30]
0xd6 0xf8 0x1e 0x50

# CHECK:	ldrh.w	r5, [r6, #30]
0xb6 0xf8 0x1e 0x50

# CHECK:	ldrt	r5, [r6, #30]
0x56 0xf8 0x1e 0x5e

# CHECK:	ldr	r5, [r6, #-30]
0x56 0xf8 0x1e 0x5c

# CHECK:	sel	r7, r3, r5
0xa3 0xfa 0x85 0xf7

# CHECK:	lsl.w	r7, r3, r5
0x03 0xfa 0x05 0xf7

# CHECK:	adds.w	r7, r3, r5
0x13 0xeb 0x05 0x07

# CHECK:	smlabt	r4, r3, r2, r1
0x13 0xfb 0x12 0x14

# CHECK:	smmulr	r7, r8, r9
0x58 0xfb 0x19 0xf7

# CHECK:	umull	r1, r2, r3, r4
0xa3 0xfb 0x04 0x12

# CHECK:	pld	[r5, r0, lsl #1]
0x15 0xf8 0x10 0xf0

# CHECK:	pld	[pc, #-16]
0x1f 0xf8 0x10 0xf0

# CHECK:	pld	[r5, #30]
0x95 0xf8 0x1e 0xf0

# CHECK:	stc2	p12, c15, [r9], {137}
0x89 0xfc 0x89 0xfc

# CHECK:	stc2	p0, c0, [r0, #0]!
0xa0 0xfd 0x00 0x00

# CHECK:	vmov	r1, r0, d11
0x50 0xec 0x1b 0x1b

# CHECK:	dsb	nsh
0xbf 0xf3 0x47 0x8f

# CHECK:	isb
0xbf 0xf3 0x6f 0x8f

# CHECK:	asrs	r1, r0, #32
0x1 0x10

# CHECK:	lsr.w	r10, r0, #32
0x4f 0xea 0x10 0x0a

# CHECK:	blx	sp
0xe8 0x47

# CHECK:	bx	lr
0x70 0x47

# CHECK:	bx	pc
0x78 0x47

# CHECK:	svc	#230
0xe6 0xdf

# CHECK:	rfedb	lr
0x1e 0xe8 0x00 0xc0

# CHECK:	mov.w	r3, #4294967295
0x4f 0xf0 0xff 0x33

# CHECK:	mov	pc, sp
0xef 0x46

# CHECK:	nop
0x00 0xbf

# CHECK:	nop.w
0xaf 0xf3 0x00 0x80

# CHECK:	bne	#24
0x0c 0xd1

# CHECK:	vadd.f32	q0, q1, q2
0x02 0xef 0x44 0x0d

# CHECK:        ldrsb   r1, [r0, r0]
0x01 0x56

# CHECK:        ldrsh   r1, [r0, r0]
0x01 0x5E

# CHECK: and.w	r5, r1, r10, ror #7
0x1 0xea 0xfa 0x95

# CHECK: ldrsh	r6, [sp], #81
0x3d 0xf9 0x51 0x6b

# CHECK: usat16	r4, #10, r1
0xa1 0xf3 0x0a 0x04

# CHECK: smlad	r5, r12, r8, r11
0x2c 0xfb 0x8 0xb5

# CHECK: teq.w	r0, r11
0x90 0xea 0xb 0x8f

# CHECK: uxtb16	r9, r12, ror #16
0x3f 0xfa 0xec 0xf9

# CHECK: pldw	[r11, r12, lsl #2]
0x3b 0xf8 0x2c 0xf0

# CHECK: msr    CPSR_fc, r0
0x80 0xf3 0x00 0x89

# CHECK: mrs    r0, apsr
0xef 0xf3 0x00 0x80

# rdar://11313994
# CHECK: blx	#2313244
0x34 0xf2 0x0e 0xee

# rdar://11324693
# CHECK: bl	#-12303196
0x44 0xf4 0x52 0xda
