James Molloy | 8067df9 | 2011-09-07 19:42:28 +0000 | [diff] [blame] | 1 | # RUN: llvm-mc --disassemble %s -triple=thumbv7-apple-darwin9 | FileCheck %s |
Johnny Chen | dcb29ae | 2011-03-29 21:09:30 +0000 | [diff] [blame] | 2 | |
| 3 | # CHECK: push {r0, r1, r2, r3} |
| 4 | # CHECK-NEXT: push {r4, r5, r7, lr} |
| 5 | # CHECK-NEXT: add r7, sp, #8 |
| 6 | # CHECK-NEXT: sub sp, #4 |
| 7 | # CHECK-NEXT: add r3, sp, #20 |
| 8 | # CHECK-NEXT: ldr r5, [r3], #4 |
| 9 | # CHECK-NEXT: str r3, [sp] |
Jim Grosbach | 4739f2e | 2012-10-30 01:04:51 +0000 | [diff] [blame] | 10 | # CHECK-NEXT: ldr r3, [pc, #52] |
Johnny Chen | dcb29ae | 2011-03-29 21:09:30 +0000 | [diff] [blame] | 11 | # CHECK-NEXT: add r3, pc |
| 12 | # CHECK-NEXT: ldr r0, [r3] |
| 13 | # CHECK-NEXT: ldr r4, [r0] |
Jim Grosbach | 4739f2e | 2012-10-30 01:04:51 +0000 | [diff] [blame] | 14 | # CHECK-NEXT: ldr r0, [pc, #48] |
Johnny Chen | dcb29ae | 2011-03-29 21:09:30 +0000 | [diff] [blame] | 15 | # CHECK-NEXT: add r0, pc |
| 16 | # CHECK-NEXT: ldr r0, [r0] |
| 17 | # CHECK-NEXT: ldr r0, [r0] |
| 18 | # CHECK-NEXT: blx #191548 |
| 19 | # CHECK-NEXT: cbnz r0, #6 |
Jim Grosbach | 4739f2e | 2012-10-30 01:04:51 +0000 | [diff] [blame] | 20 | # CHECK-NEXT: ldr r1, [pc, #40] |
Johnny Chen | dcb29ae | 2011-03-29 21:09:30 +0000 | [diff] [blame] | 21 | # CHECK-NEXT: add r1, pc |
| 22 | # CHECK-NEXT: ldr r1, [r1] |
| 23 | # CHECK-NEXT: b #0 |
| 24 | # CHECK-NEXT: mov r1, r0 |
| 25 | # CHECK-NEXT: mov r0, r4 |
| 26 | # CHECK-NEXT: mov r2, r5 |
| 27 | # CHECK-NEXT: ldr r3, [sp] |
| 28 | # CHECK-NEXT: bl #-8390 |
Johnny Chen | 1515824 | 2011-04-05 19:42:11 +0000 | [diff] [blame] | 29 | # Data bytes (corresponds to an invalid instruction) |
| 30 | # But not: sub.w sp, r7, #8 |
Johnny Chen | dcb29ae | 2011-03-29 21:09:30 +0000 | [diff] [blame] | 31 | # CHECK-NEXT: pop.w {r4, r5, r7, lr} |
| 32 | # CHECK-NEXT: add sp, #16 |
| 33 | # CHECK-NEXT: bx lr |
| 34 | # CHECK-NEXT: nop |
| 35 | # CHECK-NEXT: movs r3, #142 |
| 36 | # CHECK-NEXT: movs r5, r0 |
| 37 | # CHECK-NEXT: adds r1, #122 |
| 38 | # CHECK-NEXT: movs r5, r0 |
| 39 | # CHECK-NEXT: adds r1, #104 |
| 40 | # CHECK-NEXT: movs r5, r0 |
| 41 | 0x0f 0xb4 |
| 42 | 0xb0 0xb5 |
| 43 | 0x02 0xaf |
| 44 | 0x81 0xb0 |
| 45 | 0x05 0xab |
| 46 | 0x53 0xf8 0x04 0x5b |
| 47 | 0x00 0x93 |
| 48 | 0x0d 0x4b |
| 49 | 0x7b 0x44 |
| 50 | 0x18 0x68 |
| 51 | 0x04 0x68 |
| 52 | 0x0c 0x48 |
| 53 | 0x78 0x44 |
| 54 | 0x00 0x68 |
| 55 | 0x00 0x68 |
| 56 | 0x2e 0xf0 0x1e 0xee |
| 57 | 0x18 0xb9 |
| 58 | 0x0a 0x49 |
| 59 | 0x79 0x44 |
| 60 | 0x09 0x68 |
| 61 | 0x00 0xe0 |
| 62 | 0x01 0x46 |
| 63 | 0x20 0x46 |
| 64 | 0x2a 0x46 |
| 65 | 0x00 0x9b |
| 66 | 0xfd 0xf7 0x9d 0xff |
Johnny Chen | 1515824 | 2011-04-05 19:42:11 +0000 | [diff] [blame] | 67 | # 0xa7 0xf1 0x08 0x0d |
Johnny Chen | dcb29ae | 2011-03-29 21:09:30 +0000 | [diff] [blame] | 68 | 0xbd 0xe8 0xb0 0x40 |
| 69 | 0x04 0xb0 |
| 70 | 0x70 0x47 |
| 71 | 0x00 0xbf |
| 72 | 0x8e 0x23 |
| 73 | 0x05 0x00 |
| 74 | 0x7a 0x31 |
| 75 | 0x05 0x00 |
| 76 | 0x68 0x31 |
| 77 | 0x05 0x00 |