2011-09-07 21:42:28 +02:00
|
|
|
# RUN: llvm-mc --disassemble %s -triple=thumbv7-apple-darwin9 -mattr +t2xtpk,+mp | FileCheck %s
|
2010-04-03 00:27:38 +02:00
|
|
|
|
|
|
|
# CHECK: add r5, sp, #68
|
|
|
|
0x11 0xad
|
|
|
|
|
|
|
|
# CHECK: adcs r0, r0, #1
|
|
|
|
0x50 0xf1 0x01 0x00
|
|
|
|
|
2011-03-18 01:38:03 +01:00
|
|
|
# CHECK: b #30
|
2010-04-03 00:27:38 +02:00
|
|
|
0x0f 0xe0
|
|
|
|
|
2011-04-13 23:35:49 +02:00
|
|
|
# CHECK: bgt.w #-16
|
|
|
|
0x3f 0xf7 0xf8 0xaf
|
2010-04-19 23:19:52 +02:00
|
|
|
|
2011-04-16 00:52:15 +02:00
|
|
|
# CHECK: bfc r0, #10, #10
|
|
|
|
0x6f 0xf3 0x93 0x20
|
|
|
|
|
2010-04-03 00:27:38 +02:00
|
|
|
# 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
|
|
|
|
|
2011-08-18 23:50:53 +02:00
|
|
|
# CHECK: ldm r0!, {r1}
|
2010-04-03 00:27:38 +02:00
|
|
|
0x02 0xc8
|
|
|
|
|
2011-04-22 21:12:43 +02:00
|
|
|
# CHECK: ldr r5, #432
|
|
|
|
0x6c 0x4d
|
|
|
|
|
2011-03-17 23:04:05 +01:00
|
|
|
# CHECK: str r0, [r3]
|
|
|
|
0x18 0x60
|
|
|
|
|
|
|
|
# CHECK: str r0, [r3, #4]
|
|
|
|
0x58 0x60
|
|
|
|
|
|
|
|
# CHECK: str r2, [r5, r3]
|
|
|
|
0xea 0x50
|
|
|
|
|
2011-09-22 01:44:46 +02:00
|
|
|
# CHECK: ldrb.w r8, [pc, #-24]
|
For t2LDRT, t2LDRBT, t2LDRHT, t2LDRSBT, and t2LDRSHT, if Rn(Inst{19-16})=='1111',
transform the Opcode to the corresponding t2LDR*pci counterpart.
Ref: A8.6.86 LDRT, A8.6.65 LDRBT, A8.6.77 LDRHT, A8.6.81 LDRSBT, A8.6.85 LDRSHT
llvm-svn: 101915
2010-04-20 19:28:50 +02:00
|
|
|
0x1f 0xf8 0x18 0x80
|
|
|
|
|
2010-04-03 00:27:38 +02:00
|
|
|
# CHECK: ldrd r0, r1, [r7, #64]!
|
|
|
|
0xf7 0xe9 0x10 0x01
|
|
|
|
|
2011-04-05 21:42:11 +02:00
|
|
|
# CHECK: lsls.w r0, r5, #1
|
|
|
|
0x5f 0xea 0x45 0x00
|
2010-04-03 00:27:38 +02:00
|
|
|
|
|
|
|
# CHECK: mov r11, r7
|
|
|
|
0xbb 0x46
|
|
|
|
|
|
|
|
# CHECK: pkhtb r2, r4, r6, asr #16
|
|
|
|
0xc4 0xea 0x26 0x42
|
|
|
|
|
2010-08-17 19:23:19 +02:00
|
|
|
# CHECK-NOT: pkhbt r2, r4, r6, lsl #0
|
|
|
|
# CHECK: pkhbt r2, r4, r6
|
|
|
|
0xc4 0xea 0x06 0x02
|
|
|
|
|
2010-12-03 21:33:01 +01:00
|
|
|
# CHECK: pop.w {r2, r4, r6, r8, r10, r12}
|
2010-04-03 00:27:38 +02:00
|
|
|
0xbd 0xe8 0x54 0x15
|
|
|
|
|
2010-12-03 21:33:01 +01:00
|
|
|
# CHECK: push.w {r2, r4, r6, r8, r10, r12}
|
2010-04-03 00:27:38 +02:00
|
|
|
0x2d 0xe9 0x54 0x15
|
|
|
|
|
|
|
|
# CHECK: rsbs r0, r0, #0
|
|
|
|
0x40 0x42
|
|
|
|
|
2010-08-14 01:24:25 +02:00
|
|
|
# CHECK-NOT: rsb r0, r2, r0, lsl #0
|
|
|
|
# CHECK: rsb r0, r2, r0
|
|
|
|
0xc2 0xeb 0x00 0x00
|
|
|
|
|
2010-08-13 23:48:10 +02:00
|
|
|
# CHECK-NOT: ssat r0, #17, r12, lsl #0
|
|
|
|
# CHECK: ssat r0, #17, r12
|
|
|
|
0x0c 0xf3 0x10 0x00
|
|
|
|
|
2010-12-01 20:18:46 +01:00
|
|
|
# CHECK: strd r0, r1, [r7, #64]
|
2010-04-03 00:27:38 +02:00
|
|
|
0xc7 0xe9 0x10 0x01
|
|
|
|
|
|
|
|
# CHECK: sub sp, #60
|
|
|
|
0x8f 0xb0
|
|
|
|
|
|
|
|
# CHECK: subw r0, pc, #1
|
|
|
|
0xaf 0xf2 0x01 0x00
|
|
|
|
|
2010-04-20 20:45:24 +02:00
|
|
|
# CHECK: subw r0, sp, #835
|
|
|
|
0xad 0xf2 0x43 0x30
|
|
|
|
|
2010-04-03 00:27:38 +02:00
|
|
|
# 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
|
|
|
|
|
2011-08-18 23:50:53 +02:00
|
|
|
# CHECK: stmne r0!, {r1, r2, r3}
|
2010-04-21 03:01:19 +02:00
|
|
|
0x0e 0xc0
|
|
|
|
|
2010-04-03 00:27:38 +02:00
|
|
|
# IT block end
|
2010-04-21 03:01:19 +02:00
|
|
|
# CHECK: rsbs r1, r2, #0
|
|
|
|
0x51 0x42
|
2011-02-14 14:09:44 +01:00
|
|
|
|
|
|
|
# CHECK: cpsid.w f
|
|
|
|
0xaf 0xf3 0x20 0x86
|
|
|
|
|
|
|
|
# CHECK: cps #15
|
|
|
|
0xaf 0xf3 0x0f 0x81
|
|
|
|
|
|
|
|
# CHECK: cpsie.w if, #10
|
|
|
|
0xaf 0xf3 0x6a 0x85
|
|
|
|
|
|
|
|
# CHECK: cpsie aif
|
|
|
|
0x67 0xb6
|
2011-02-18 20:45:59 +01:00
|
|
|
|
2011-07-20 00:45:10 +02:00
|
|
|
# CHECK: msr CPSR_fc, r0
|
2011-02-18 20:45:59 +01:00
|
|
|
0x80 0xf3 0x00 0x89
|
2011-02-28 19:46:31 +01:00
|
|
|
|
2011-03-18 01:38:03 +01:00
|
|
|
# CHECK: blx #-4
|
2011-02-28 19:46:31 +01:00
|
|
|
0xff 0xf7 0xfe 0xef
|
2011-03-22 21:00:10 +01:00
|
|
|
|
|
|
|
# CHECK: vpush {d8, d9, d10}
|
|
|
|
0x2d 0xed 0x06 0x8b
|
2011-03-23 00:08:56 +01:00
|
|
|
|
|
|
|
# CHECK: vcmpe.f64 d8, #0
|
|
|
|
0xb5 0xee 0xc0 0x8b
|
2011-03-24 22:36:56 +01:00
|
|
|
|
2011-09-07 20:40:06 +02:00
|
|
|
# CHECK: stmdb sp, {r0, r2, r3, r8, r11, lr}
|
2011-03-24 22:36:56 +01:00
|
|
|
0x0d 0xe9 0x0d 0x49
|
2011-03-25 00:21:14 +01:00
|
|
|
|
2011-08-18 23:50:53 +02:00
|
|
|
# CHECK: stm r5!, {r0, r1, r2, r3, r4}
|
2011-03-25 00:21:14 +01:00
|
|
|
0x1f 0xc5
|
2011-03-25 00:42:31 +01:00
|
|
|
|
2011-08-18 23:50:53 +02:00
|
|
|
# CHECK: ldm r5, {r0, r1, r2, r3, r4, r5}
|
2011-03-25 00:42:31 +01:00
|
|
|
0x3f 0xcd
|
|
|
|
|
2011-08-18 23:50:53 +02:00
|
|
|
# CHECK: ldm r5!, {r0, r1, r2, r3, r4}
|
2011-03-25 00:42:31 +01:00
|
|
|
0x1f 0xcd
|
2011-03-25 01:17:42 +01:00
|
|
|
|
|
|
|
# CHECK: addw r0, pc, #1050
|
|
|
|
0x0f 0xf2 0x1a 0x40
|
2011-03-25 02:09:48 +01:00
|
|
|
|
|
|
|
# CHECK: ldrd r3, r8, [r11, #-60]
|
|
|
|
0x5b 0xe9 0x0f 0x38
|
2011-03-25 19:29:49 +01:00
|
|
|
|
|
|
|
# CHECK: ldrex r8, [r2]
|
|
|
|
0x52 0xe8 0x00 0x8f
|
|
|
|
|
2011-04-14 21:13:28 +02:00
|
|
|
# CHECK: ldrexd r8, r9, [r2]
|
|
|
|
0xd2 0xe8 0x7f 0x89
|
|
|
|
|
2011-03-25 19:29:49 +01:00
|
|
|
# CHECK: strexd r1, r7, r8, [r2]
|
|
|
|
0xc2 0xe8 0x71 0x78
|
2011-03-25 19:40:21 +01:00
|
|
|
|
|
|
|
# CHECK: tbh [r5, r4, lsl #1]
|
|
|
|
0xd5 0xe8 0x14 0xf0
|
|
|
|
|
|
|
|
# CHECK: tbb [r5, r4]
|
|
|
|
0xd5 0xe8 0x04 0xf0
|
2011-03-25 20:35:37 +01:00
|
|
|
|
|
|
|
# CHECK: ldr.w r4, [sp, r4, lsl #3]
|
|
|
|
0x5d 0xf8 0x34 0x40
|
|
|
|
|
|
|
|
# CHECK: ldr.w r5, [r6, #30]
|
2011-04-12 20:48:00 +02:00
|
|
|
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
|
2011-03-25 23:19:07 +01:00
|
|
|
|
|
|
|
# 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
|
2011-03-25 23:43:28 +01:00
|
|
|
|
|
|
|
# CHECK: smlabt r4, r3, r2, r1
|
|
|
|
0x13 0xfb 0x12 0x14
|
|
|
|
|
|
|
|
# CHECK: smmulr r7, r8, r9
|
|
|
|
0x58 0xfb 0x19 0xf7
|
2011-03-26 00:02:58 +01:00
|
|
|
|
|
|
|
# CHECK: umull r1, r2, r3, r4
|
|
|
|
0xa3 0xfb 0x04 0x12
|
2011-03-26 02:32:48 +01:00
|
|
|
|
|
|
|
# CHECK: pld [r5, r0, lsl #1]
|
|
|
|
0x15 0xf8 0x10 0xf0
|
|
|
|
|
|
|
|
# CHECK: pld [pc, #-16]
|
|
|
|
0x1f 0xf8 0x10 0xf0
|
2011-03-30 03:02:06 +02:00
|
|
|
|
2011-04-12 20:48:00 +02:00
|
|
|
# CHECK: pld [r5, #30]
|
|
|
|
0x95 0xf8 0x1e 0xf0
|
|
|
|
|
2011-09-07 23:10:42 +02:00
|
|
|
# CHECK: stc p12, cr15, [r9], {137}
|
|
|
|
0x89 0xfc 0x89 0xfc
|
2011-04-06 22:49:02 +02:00
|
|
|
|
|
|
|
# CHECK: vmov r1, r0, d11
|
|
|
|
0x50 0xec 0x1b 0x1b
|
2011-04-08 21:18:07 +02:00
|
|
|
|
|
|
|
# CHECK: dsb nsh
|
|
|
|
0xbf 0xf3 0x47 0x8f
|
|
|
|
|
|
|
|
# CHECK: isb
|
|
|
|
0xbf 0xf3 0x6f 0x8f
|
2011-04-11 23:14:35 +02:00
|
|
|
|
|
|
|
# CHECK: asrs r1, r0, #32
|
|
|
|
0x1 0x10
|
|
|
|
|
|
|
|
# CHECK: lsr.w r10, r0, #32
|
|
|
|
0x4f 0xea 0x10 0x0a
|
2011-04-12 01:33:30 +02:00
|
|
|
|
|
|
|
# CHECK: blx sp
|
|
|
|
0xe8 0x47
|
|
|
|
|
|
|
|
# CHECK: bx lr
|
|
|
|
0x70 0x47
|
|
|
|
|
|
|
|
# CHECK: bx pc
|
|
|
|
0x78 0x47
|
2011-04-12 02:21:48 +02:00
|
|
|
|
|
|
|
# CHECK: svc #230
|
|
|
|
0xe6 0xdf
|
2011-04-12 23:41:51 +02:00
|
|
|
|
|
|
|
# CHECK: rfedb lr
|
|
|
|
0x1e 0xe8 0x00 0xc0
|
2011-04-13 19:51:02 +02:00
|
|
|
|
|
|
|
# CHECK: mov.w r3, #4294967295
|
|
|
|
0x4f 0xf0 0xff 0x33
|
2011-04-13 23:59:01 +02:00
|
|
|
|
|
|
|
# CHECK: mov pc, sp
|
|
|
|
0xef 0x46
|
2011-04-28 01:29:21 +02:00
|
|
|
|
|
|
|
# CHECK: nop
|
|
|
|
0x00 0xbf
|
|
|
|
|
|
|
|
# CHECK: nop.w
|
|
|
|
0xaf 0xf3 0x00 0x80
|
2011-05-18 22:32:41 +02:00
|
|
|
|
|
|
|
# CHECK: bne #24
|
|
|
|
0x0c 0xd1
|
2011-08-10 21:01:10 +02:00
|
|
|
|
|
|
|
# CHECK: vadd.f32 q0, q1, q2
|
|
|
|
0x02 0xef 0x44 0x0d
|
2011-08-15 21:00:06 +02:00
|
|
|
|
|
|
|
# CHECK: ldrsb r1, [r0, r0]
|
|
|
|
0x01 0x56
|
2011-08-15 22:15:43 +02:00
|
|
|
|
|
|
|
# CHECK: ldrsh r1, [r0, r0]
|
|
|
|
0x01 0x5E
|
2011-08-23 01:10:16 +02:00
|
|
|
|
|
|
|
# CHECK: and.w r5, r1, r10, ror #7
|
|
|
|
0x1 0xea 0xfa 0x95
|
2011-08-23 01:22:05 +02:00
|
|
|
|
|
|
|
# CHECK: ldrsh r6, [sp], #81
|
|
|
|
0x3d 0xf9 0x51 0x6b
|
2011-08-23 01:27:47 +02:00
|
|
|
|
|
|
|
# CHECK: usat16 r4, #10, r1
|
2011-09-24 00:05:54 +02:00
|
|
|
0xa1 0xf3 0x0a 0x04
|
2011-08-23 01:31:45 +02:00
|
|
|
|
|
|
|
# CHECK: smlad r5, r12, r8, r11
|
|
|
|
0x2c 0xfb 0x8 0xb5
|
2011-08-23 19:37:32 +02:00
|
|
|
|
|
|
|
# CHECK: teq.w r0, r11
|
|
|
|
0x90 0xea 0xb 0x8f
|
|
|
|
|
|
|
|
# CHECK: uxtb16 r9, r12, ror #16
|
|
|
|
0x3f 0xfa 0xec 0xf9
|
2011-08-23 19:51:38 +02:00
|
|
|
|
|
|
|
# CHECK: pldw [r11, r12, lsl #2]
|
|
|
|
0x3b 0xf8 0x2c 0xf0
|
2011-09-28 16:21:38 +02:00
|
|
|
|
|
|
|
# CHECK: msr CPSR_fc, r0
|
|
|
|
0x80 0xf3 0x00 0x89
|
|
|
|
|
|
|
|
# CHECK: mrs r0, apsr
|
|
|
|
0xef 0xf3 0x00 0x80
|