Initial ARM/Thumb disassembler check-in. It consists of a tablgen backend
authorJohnny Chen <johnny.chen@apple.com>
Tue, 16 Mar 2010 16:36:54 +0000 (16:36 +0000)
committerJohnny Chen <johnny.chen@apple.com>
Tue, 16 Mar 2010 16:36:54 +0000 (16:36 +0000)
commitd30a98e43ae18e1fc70a7dc748edf669d809c685
tree808136df95741812c7297abfb604a5696499dad0
parentea7f22c31d0d12923eaab6840322431cc0222ae9
Initial ARM/Thumb disassembler check-in.  It consists of a tablgen backend
(RISCDisassemblerEmitter) which emits the decoder functions for ARM and Thumb,
and the disassembler core which invokes the decoder function and builds up the
MCInst based on the decoded Opcode.

Added sub-formats to the NeonI/NeonXI instructions to further refine the NEONFrm
instructions to help disassembly.

We also changed the output of the addressing modes to omit the '+' from the
assembler syntax #+/-<imm> or +/-<Rm>.  See, for example, A8.6.57/58/60.

And modified test cases to not expect '+' in +reg or #+num.  For example,

; CHECK:       ldr.w r9, [r7, #28]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98637 91177308-0d34-0410-b5e6-96231b3b80d8
33 files changed:
Makefile.rules
lib/Target/ARM/ARMAddressingModes.h
lib/Target/ARM/ARMInstrFormats.td
lib/Target/ARM/ARMInstrNEON.td
lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
lib/Target/ARM/AsmPrinter/ARMInstPrinter.cpp
lib/Target/ARM/AsmPrinter/ARMInstPrinter.h
lib/Target/ARM/Disassembler/ARMDisassembler.cpp [new file with mode: 0644]
lib/Target/ARM/Disassembler/ARMDisassembler.h [new file with mode: 0644]
lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp [new file with mode: 0644]
lib/Target/ARM/Disassembler/ARMDisassemblerCore.h [new file with mode: 0644]
lib/Target/ARM/Disassembler/Makefile [new file with mode: 0644]
lib/Target/ARM/Disassembler/ThumbDisassemblerCore.cpp.inc [new file with mode: 0644]
lib/Target/ARM/Makefile
lib/Target/ARM/Thumb2ITBlockPass.cpp
test/CodeGen/ARM/2009-10-27-double-align.ll
test/CodeGen/ARM/2009-10-30.ll
test/CodeGen/ARM/arm-negative-stride.ll
test/CodeGen/ARM/globals.ll
test/CodeGen/ARM/ldrd.ll
test/CodeGen/ARM/str_pre-2.ll
test/CodeGen/ARM/tls2.ll
test/CodeGen/Thumb2/ldr-str-imm12.ll
test/CodeGen/Thumb2/thumb2-ldr.ll
test/CodeGen/Thumb2/thumb2-ldrh.ll
test/CodeGen/Thumb2/thumb2-str.ll
test/CodeGen/Thumb2/thumb2-str_pre.ll
test/CodeGen/Thumb2/thumb2-strb.ll
test/CodeGen/Thumb2/thumb2-strh.ll
utils/TableGen/DisassemblerEmitter.cpp
utils/TableGen/RISCDisassemblerEmitter.cpp [new file with mode: 0644]
utils/TableGen/RISCDisassemblerEmitter.h [new file with mode: 0644]
utils/TableGen/TableGen.cpp