From ce046b98ed6c351779fc43599a80d588752bc1ca Mon Sep 17 00:00:00 2001 From: Amaury de la Vieuville Date: Tue, 18 Jun 2013 08:03:06 +0000 Subject: ARM: fix thumb literal loads decoding This fixes two previous issues: - Negative offsets were not correctly disassembled - The decoded opcodes were not the right one git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184180 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/MC/Disassembler/ARM/thumb2.txt | 57 +++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/MC/Disassembler/ARM/thumb2.txt b/test/MC/Disassembler/ARM/thumb2.txt index a681e2a6f9..eb1e112d4f 100644 --- a/test/MC/Disassembler/ARM/thumb2.txt +++ b/test/MC/Disassembler/ARM/thumb2.txt @@ -552,6 +552,17 @@ 0xd7 0xf8 0x01 0xf1 +#------------------------------------------------------------------------------ +# LDR(literal) +#------------------------------------------------------------------------------ +# CHECK: ldr.w r4, [pc, #-0] +# CHECK: ldr.w r2, [pc, #-40] +# CHECK: ldr.w r1, [pc, #1024] +0x5f 0xf8 0x00 0x40 +0x5f 0xf8 0x28 0x20 +0xdf 0xf8 0x00 0x14 + + #------------------------------------------------------------------------------ # LDR(register) #------------------------------------------------------------------------------ @@ -630,6 +641,17 @@ 0x1d 0xf8 0x04 0x39 +#------------------------------------------------------------------------------ +# LDRB(literal) +#------------------------------------------------------------------------------ +# CHECK: ldrb.w r6, [pc, #-0] +# CHECK: ldrb.w r10, [pc, #227] +# CHECK: ldrb.w r5, [pc, #0] +0x1f 0xf8 0x00 0x60 +0x9f 0xf8 0xe3 0xa0 +0x9f 0xf8 0x00 0x50 + + #------------------------------------------------------------------------------ # LDRBT #------------------------------------------------------------------------------ @@ -699,14 +721,12 @@ # CHECK: ldrh.w r5, [r6, #33] # CHECK: ldrh.w r5, [r6, #257] # CHECK: ldrh.w lr, [r7, #257] -# CHECK: ldrh.w r0, [pc, #-21] 0x35 0xf8 0x04 0x5c 0x35 0x8c 0xb6 0xf8 0x21 0x50 0xb6 0xf8 0x01 0x51 0xb7 0xf8 0x01 0xe1 -0x3f 0xf8 0x15 0x00 #------------------------------------------------------------------------------ @@ -739,6 +759,17 @@ 0x3d 0xf8 0x04 0x39 +#------------------------------------------------------------------------------ +# LDRH(literal) +#------------------------------------------------------------------------------ +# CHECK: ldrh.w r7, [pc, #-0] +# CHECK: ldrh.w r5, [pc, #121] +# CHECK: ldrh.w r4, [pc, #0] +0x3f 0xf8 0x00 0x70 +0xbf 0xf8 0x79 0x50 +0xbf 0xf8 0x00 0x40 + + #------------------------------------------------------------------------------ # LDRSB(immediate) #------------------------------------------------------------------------------ @@ -785,6 +816,17 @@ 0x1d 0xf9 0x04 0x39 +#------------------------------------------------------------------------------ +# LDRSB(literal) +#------------------------------------------------------------------------------ +# CHECK: ldrsb.w r0, [pc, #-0] +# CHECK: ldrsb.w r12, [pc, #80] +# CHECK: ldrsb.w r3, [pc, #0] +0x1f 0xf9 0x00 0x00 +0x9f 0xf9 0x50 0xc0 +0x9f 0xf9 0x00 0x30 + + #------------------------------------------------------------------------------ # LDRSBT #------------------------------------------------------------------------------ @@ -846,6 +888,17 @@ 0x3d 0xf9 0x04 0x39 +#------------------------------------------------------------------------------ +# LDRSH(literal) +#------------------------------------------------------------------------------ +# CHECK: ldrsh.w r0, [pc, #-0] +# CHECK: ldrsh.w r10, [pc, #-231] +# CHECK: ldrsh.w r6, [pc, #0] +0x3f 0xf9 0x00 0x00 +0x3f 0xf9 0xe7 0xa0 +0xbf 0xf9 0x00 0x60 + + #------------------------------------------------------------------------------ # LDRSHT #------------------------------------------------------------------------------ -- cgit v1.2.3