llvm-6502/test/MC/Disassembler/ARM/thumb-printf.txt
Jim Grosbach 8ba1474181 ARM: Better disassembly for pc-relative LDR.
When the operand is a plain immediate rather than a label, print it
as [pc, #imm] like we do for the Thumb2 wide encoding variant.

rdar://12154503

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166991 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-30 01:04:51 +00:00

78 lines
1.5 KiB
Plaintext

# RUN: llvm-mc --disassemble %s -triple=thumbv7-apple-darwin9 | FileCheck %s
# CHECK: push {r0, r1, r2, r3}
# CHECK-NEXT: push {r4, r5, r7, lr}
# CHECK-NEXT: add r7, sp, #8
# CHECK-NEXT: sub sp, #4
# CHECK-NEXT: add r3, sp, #20
# CHECK-NEXT: ldr r5, [r3], #4
# CHECK-NEXT: str r3, [sp]
# CHECK-NEXT: ldr r3, [pc, #52]
# CHECK-NEXT: add r3, pc
# CHECK-NEXT: ldr r0, [r3]
# CHECK-NEXT: ldr r4, [r0]
# CHECK-NEXT: ldr r0, [pc, #48]
# CHECK-NEXT: add r0, pc
# CHECK-NEXT: ldr r0, [r0]
# CHECK-NEXT: ldr r0, [r0]
# CHECK-NEXT: blx #191548
# CHECK-NEXT: cbnz r0, #6
# CHECK-NEXT: ldr r1, [pc, #40]
# CHECK-NEXT: add r1, pc
# CHECK-NEXT: ldr r1, [r1]
# CHECK-NEXT: b #0
# CHECK-NEXT: mov r1, r0
# CHECK-NEXT: mov r0, r4
# CHECK-NEXT: mov r2, r5
# CHECK-NEXT: ldr r3, [sp]
# CHECK-NEXT: bl #-8390
# Data bytes (corresponds to an invalid instruction)
# But not: sub.w sp, r7, #8
# CHECK-NEXT: pop.w {r4, r5, r7, lr}
# CHECK-NEXT: add sp, #16
# CHECK-NEXT: bx lr
# CHECK-NEXT: nop
# CHECK-NEXT: movs r3, #142
# CHECK-NEXT: movs r5, r0
# CHECK-NEXT: adds r1, #122
# CHECK-NEXT: movs r5, r0
# CHECK-NEXT: adds r1, #104
# CHECK-NEXT: movs r5, r0
0x0f 0xb4
0xb0 0xb5
0x02 0xaf
0x81 0xb0
0x05 0xab
0x53 0xf8 0x04 0x5b
0x00 0x93
0x0d 0x4b
0x7b 0x44
0x18 0x68
0x04 0x68
0x0c 0x48
0x78 0x44
0x00 0x68
0x00 0x68
0x2e 0xf0 0x1e 0xee
0x18 0xb9
0x0a 0x49
0x79 0x44
0x09 0x68
0x00 0xe0
0x01 0x46
0x20 0x46
0x2a 0x46
0x00 0x9b
0xfd 0xf7 0x9d 0xff
# 0xa7 0xf1 0x08 0x0d
0xbd 0xe8 0xb0 0x40
0x04 0xb0
0x70 0x47
0x00 0xbf
0x8e 0x23
0x05 0x00
0x7a 0x31
0x05 0x00
0x68 0x31
0x05 0x00