llvm-6502/test/MC/Disassembler/ARM/arm-tests.txt
Quentin Colombet d64ee4455a ARM: Correct printing of pre-indexed operands.
According to the ARM reference manual, constant offsets are mandatory for pre-indexed addressing modes.
The MC disassembler was not obeying this when the offset is 0.
It was producing instructions like: str r0, [r1]!.
Correct syntax is: str r0, [r1, #0]!.

This change modifies the dumping of operands so that the offset is always printed, regardless of its value, when pre-indexed addressing mode is used.

Patch by Mihail Popa <Mihail.Popa@arm.com>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179398 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-12 18:47:25 +00:00

369 lines
6.3 KiB
Plaintext

# RUN: llvm-mc --disassemble %s -triple=armv7-apple-darwin9 -mcpu=cortex-a9-mp | FileCheck %s
# CHECK: addpl r4, pc, #318767104
0x4c 0x45 0x8f 0x52
# CHECK: b #0
0x00 0x00 0x00 0xea
# CHECK: bl #7732
0x8d 0x07 0x00 0xeb
# CHECK: bleq #-4
0xff 0xff 0xff 0x0b
# CHECK: bfc r8, #0, #16
0x1f 0x80 0xcf 0xe7
# CHECK: bfi r8, r0, #16, #1
0x10 0x88 0xd0 0xe7
# CHECK: mov pc, lr
0x0e 0xf0 0xa0 0xe1
# CHECK: mov pc, #3221225535
0xff 0xf1 0xa0 0xe3
# CHECK: movw r7, #4096
0x00 0x70 0x01 0xe3
# CHECK: cmn r0, #1
0x01 0x00 0x70 0xe3
# CHECK: dmb
0x5f 0xf0 0x7f 0xf5
# CHECK: dmb nshst
0x56 0xf0 0x7f 0xf5
# CHECK: dsb
0x4f 0xf0 0x7f 0xf5
# CHECK: dsb st
0x4e 0xf0 0x7f 0xf5
# CHECK: isb
0x6f 0xf0 0x7f 0xf5
# FIXME: LDC encoding information is incorrect. Re-enable this along with more
# robust testing for other values when we get it fleshed out and working
# properly.
# CHECKx: ldclvc p5, cr15, [r8], #-0
#0x00 0xf5 0x78 0x7c
# CHECK: ldc p13, c9, [r2, #0]!
0x00 0x9d 0xb2 0xed
# CHECK: ldcl p1, c9, [r3, #0]!
0x00 0x91 0xf3 0xed
# CHECK: ldr r0, [r2], #15
0x0f 0x00 0x92 0xe4
# CHECK: ldr r5, [r7, -r10, lsl #2]
0x0a 0x51 0x17 0xe7
# CHECK: ldr r4, [r5, #0]!
0x00 0x40 0xb5 0xe5
# CHECK: ldrb lr, [r10, #0]!
0x00 0xe0 0xfa 0xe5
# CHECK: ldrd r4, r5, [r0, #0]!
0xd0 0x40 0xe0 0xe1
# CHECK: ldrh r0, [r2], #0
0xb0 0x00 0xd2 0xe0
# CHECK: ldrh r0, [r2]
0xb0 0x00 0xd2 0xe1
# CHECK: ldrh lr, [sp, #0]!
0xb0 0xe0 0xfd 0xe1
# CHECK: ldrht r0, [r2], #15
0xbf 0x00 0xf2 0xe0
# CHECK: ldrsb r1, [lr, #0]!
0xd0 0x10 0xfe 0xe1
# CHECK: ldrsbtvs lr, [r2], -r9
0xd9 0xe0 0x32 0x60
# CHECK: ldrsh r9, [r1, #0]
0xf0 0x90 0xf1 0xe1
# CHECK: lsls r0, r2, #31
0x82 0x0f 0xb0 0xe1
# CHECK: mcr2 p0, #0, r2, c1, c0, #7
0xf0 0x20 0x01 0xfe
# CHECK: movt r8, #65535
0xff 0x8f 0x4f 0xe3
# CHECK: mvnspl r7, #1073741885
0xf5 0x71 0xf0 0x53
# CHECK-NOT: orr r7, r8, r7, rrx #0
# CHECK: orr r7, r8, r7, rrx
0x67 0x70 0x88 0xe1
# CHECK: pkhbt r8, r9, r10, lsl #4
0x1a 0x82 0x89 0xe6
# CHECK-NOT: pkhbtls r10, r11, r11, lsl #0
# CHECK: pkhbtls r10, r11, r11
0x1b 0xa0 0x8b 0x96
# CHECK: pkhtbmi lr, r1, r6, asr #21
0xd6 0xea 0x81 0x46
# CHECK: pop {r0, r2, r4, r6, r8, r10}
0x55 0x05 0xbd 0xe8
# CHECK: push {r0, r2, r4, r6, r8, r10}
0x55 0x05 0x2d 0xe9
# CHECK: qsax r8, r9, r10
0x5a 0x8f 0x29 0xe6
# CHECK: rfedb r0!
0x00 0x0a 0x30 0xf9
# CHECK: srsdb sp!, #19
0x13 0x05 0x6d 0xf9
# CHECK: srsia sp, #9
0x09 0x05 0xcd 0xf8
# CHECK-NOT: rsbeq r0, r2, r0, lsl #0
# CHECK: rsbeq r0, r2, r0
0x00 0x00 0x62 0x00
# CHECK-NOT: rscseq r0, r0, r1, lsl #0
# CHECK: rscseq r0, r0, r1
0x01 0x00 0xf0 0x00
# CHECK: sbcs r0, pc, #1
0x01 0x00 0xdf 0xe2
# CHECK: sbfx r0, r1, #0, #8
0x51 0x00 0xa7 0xe7
# CHECK: ssat r8, #1, r10, lsl #8
0x1a 0x84 0xa0 0xe6
# CHECK-NOT: ssatmi r0, #17, r12, lsl #0
# CHECK: ssatmi r0, #17, r12
0x1c 0x00 0xb0 0x46
# CHECK: stmdb r10!, {r4, r5, r6, r7, lr}
0xf0 0x40 0x2a 0xe9
# CHECK: teq r0, #31
0x1f 0x00 0x30 0xe3
# CHECK: ubfx r0, r0, #16, #1
0x50 0x08 0xe0 0xe7
# CHECK: usat r8, #0, r10, asr #32
0x5a 0x80 0xe0 0xe6
# CHECK: setend be
0x00 0x02 0x01 0xf1
# CHECK: setend le
0x00 0x00 0x01 0xf1
# CHECK: cpsie aif
0xc0 0x01 0x08 0xf1
# CHECK: cps #15
0x0f 0x00 0x02 0xf1
# CHECK: cpsie if, #10
0xca 0x00 0x0a 0xf1
# CHECK: msr CPSR_fc, r0
0x00 0xf0 0x29 0xe1
# CHECK: msrmi CPSR_c, #4043309056
0xf1 0xf4 0x21 0x43
# CHECK: rsbs r6, r7, r8
0x08 0x60 0x77 0xe0
# CHECK: blxeq r5
0x35 0xff 0x2f 0x01
# CHECK: bx r12
0x1c 0xff 0x2f 0xe1
# CHECK: bxeq r5
0x15 0xff 0x2f 0x01
# CHECK: uqadd16mi r6, r11, r8
0x18 0x6F 0x6b 0x46
# CHECK: str r0, [sp, #4]
0x04 0x00 0x8d 0xe5
# CHECK: str r1, [sp]
0x00 0x10 0x8d 0xe5
# CHECK: ldr r3, [pc, #144]
0x90 0x30 0x9f 0xe5
# CHECK: ldr r3, [r0, #-4]
0x4 0x30 0x10 0xe5
# CHECK: ldr r5, [sp, r0, lsl #1]!
0x80 0x50 0xbd 0xe7
# CHECK: ldr r5, [r7], -r0, lsr #2
0x20 0x51 0x17 0xe6
# CHECK: strdeq r2, r3, [r0], -r8
0xf8 0x20 0x00 0x00
# CHECK: ldrdeq r2, r3, [r0], -r12
0xdc 0x24 0x00 0x00
# CHECK: ldrbt r3, [r4], -r5, lsl #12
0x05 0x36 0x74 0xe6
# CHECK: vcmpe.f64 d8, #0
0xc0 0x8b 0xb5 0xee
# CHECK: vldmdb r2!, {s7, s8, s9, s10, s11}
0x05 0x3a 0x72 0xed
# CHECK: vldr s23, [r2, #660]
0xa5 0xba 0xd2 0xed
# CHECK: strtvc r5, [r3], r0, lsr #20
0x20 0x5a 0xa3 0x76
# CHECK: stmiblo sp, {r0, r4, r8, r11, r12, pc}
0x11 0x99 0x8d 0x39
# CHECK: ldmdb sp, {r0, r4, r8, r11, r12, pc}
0x11 0x99 0x1d 0xe9
# CHECK: swpge r3, r2, [r6]
0x92 0x30 0x06 0xa1
# CHECK: umull r1, r2, r3, r4
0x93 0x14 0x82 0xe0
# CHECK: pldw [pc, #-0]
0x00 0xf0 0x1f 0xf5
# CHECK: pli [pc, #-0]
0x00 0xf0 0x5f 0xf4
# CHECK: pli [r3, r1, lsl #2]
0x01 0xf1 0xd3 0xf6
# CHECK: stc p2, c4, [r9], {157}
0x9d 0x42 0x89 0xec
# CHECK: stc p15, c0, [r3, #0]!
0x00 0x0f 0xa3 0xed
# CHECK: stc2 p2, c4, [r9], {157}
0x9d 0x42 0x89 0xfc
# CHECK: stcl p13, c12, [r9, #0]!
0x00 0xcd 0xe9 0xed
# CHECK: str pc, [r11, #0]!
0x00 0xf0 0xab 0xe5
# CHECK: strb r9, [r10, #0]!
0x00 0x90 0xea 0xe5
# CHECK: strd r12, sp, [r6, #0]!
0xf0 0xc0 0xe6 0xe1
# CHECK: strh r7, [r9, #0]!
0xb0 0x70 0xe9 0xe1
# CHECK: bne #-24
0xfa 0xff 0xff 0x1a
# CHECK: blx #60
0x0f 0x00 0x00 0xfa
# CHECK-NOT: adcs r10, r8, r0, asr #6
# CHECK: adcshi r10, r8, r0, asr #6
0x40 0xa3 0xb8 0x80
# CHECK: adcshi r10, r8, r0, asr r3
0x50 0xa3 0xb8 0x80
# CHECK: streq r1, [sp], #-1567
0x1f 0x16 0xd 0x4
# CHECK: mrchs p2, #3, r11, c13, c6, #6
0xd6 0xb2 0x7d 0x2e
# CHECK: smlsldx r4, r12, r11, r4
0x7b 0x44 0x4c 0xe7
# CHECK: lsl r3, r2, r1
0x12 0x31 0xa0 0xe1
# CHECK: sxtab r9, r8, r5
0x75 0x90 0xa8 0xe6
# CHECK: sxtb r9, r5, ror #8
0x75 0x94 0xaf 0xe6
# CHECK: bfc r5, #0, #16
0x1f 0x50 0xcf 0xe7
# CHECK: bfi r5, r6, #0, #16
0x16 0x50 0xcf 0xe7
# CHECK: sbfx r5, r6, #8, #8
0x56 0x54 0xa7 0xe7
# CHECK: rsb pc, r5, r0
0x00 0xf0 0x65 0xe0
# CHECK: uqadd8 r5, r6, r7
0x97 0x5f 0x66 0xe6
# CHECK: uqsax r5, r6, r7
0x57 0x5f 0x66 0xe6
# CHECK: smmlareq r0, r0, r0, r0
0x30 0x00 0x50 0x07
# CHECK: nop
0x00 0xf0 0x20 0xe3
# CHECK: andeq r0, r0, r0, lsr #32
0x20 0x00 0x00 0x00
# CHECK: strb r3, [r2], #1
0x01 0x30 0xc2 0xe4
# CHECK: strheq r0, [r0, -r0]
0xb0 0x00 0x00 0x01
# CHECK: rfedb #4!
0x14 0x0 0x32 0xf9
# CHECK: stc2l p0, c0, [r2], #-96
0x18 0x0 0x62 0xfc
# CHECK: ldmgt sp!, {r9}
0x00 0x02 0xbd 0xc8
# CHECK: cdp2 p10, #0, c6, c12, c0, #7
0xe0 0x6a 0x0c 0xfe