llvm-6502/lib/Target/Mips
Jim Grosbach fc1a161d76 Switch the fixed-length disassembler to be table-driven.
Refactor the TableGen'erated fixed length disassemblmer to use a
table-driven state machine rather than a massive set of nested
switch() statements.

As a result, the ARM Disassembler (ARMDisassembler.cpp) builds much more
quickly and generates a smaller end result. For a Release+Asserts build on
a 16GB 3.4GHz i7 iMac w/ SSD:

Time to compile at -O2 (averaged w/ hot caches):
  Previous: 35.5s
  New:       8.9s

TEXT size:
  Previous: 447,251
  New:      297,661

Builds in 25% of the time previously required and generates code 66% of
the size.

Execution time of the disassembler is only slightly slower (7% disassembling
10 million ARM instructions, 19.6s vs 21.0s). The new implementation has
not yet been tuned, however, so the performance should almost certainly
be recoverable should it become a concern.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161888 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-14 19:06:05 +00:00
..
AsmParser
Disassembler Switch the fixed-length disassembler to be table-driven. 2012-08-14 19:06:05 +00:00
InstPrinter
MCTargetDesc Mips relocation R_MIPS_64 relocates a 64 bit double word. 2012-08-07 00:01:14 +00:00
TargetInfo
CMakeLists.txt Add definitions of two subclasses of MipsRegisterInfo, Mips16RegisterInfo and 2012-07-31 23:41:32 +00:00
LLVMBuild.txt
Makefile
Mips16FrameLowering.cpp Move the code that creates instances of MipsInstrInfo and MipsFrameLowering out 2012-08-02 18:21:47 +00:00
Mips16FrameLowering.h Add definitions of two subclasses of MipsFrameLowering, Mips16FrameLowering and 2012-07-31 22:50:19 +00:00
Mips16InstrFormats.td
Mips16InstrInfo.cpp Move the code that creates instances of MipsInstrInfo and MipsFrameLowering out 2012-08-02 18:21:47 +00:00
Mips16InstrInfo.h Add definitions of two subclasses of MipsRegisterInfo, Mips16RegisterInfo and 2012-07-31 23:41:32 +00:00
Mips16InstrInfo.td 1. Redo mips16 instructions to avoid multiple opcodes for same instruction. 2012-08-03 22:57:02 +00:00
Mips16RegisterInfo.cpp 1. Redo mips16 instructions to avoid multiple opcodes for same instruction. 2012-08-03 22:57:02 +00:00
Mips16RegisterInfo.h Implement MipsSERegisterInfo::eliminateCallFramePseudoInstr. The function emits 2012-07-31 23:52:55 +00:00
Mips64InstrInfo.td Another 32 to 64 bit sign extension bug. 2012-08-09 19:43:18 +00:00
Mips.h
Mips.td
MipsAnalyzeImmediate.cpp
MipsAnalyzeImmediate.h
MipsAsmPrinter.cpp
MipsAsmPrinter.h
MipsCallingConv.td
MipsCodeEmitter.cpp
MipsCondMov.td
MipsDelaySlotFiller.cpp
MipsFrameLowering.cpp Move the code that creates instances of MipsInstrInfo and MipsFrameLowering out 2012-08-02 18:21:47 +00:00
MipsFrameLowering.h Move the code that creates instances of MipsInstrInfo and MipsFrameLowering out 2012-08-02 18:21:47 +00:00
MipsInstrFormats.td
MipsInstrFPU.td
MipsInstrInfo.cpp Move the code that creates instances of MipsInstrInfo and MipsFrameLowering out 2012-08-02 18:21:47 +00:00
MipsInstrInfo.h Move the code that creates instances of MipsInstrInfo and MipsFrameLowering out 2012-08-02 18:21:47 +00:00
MipsInstrInfo.td The Mips64InstrInfo.td definitions DynAlloc64 LEA_ADDiu64 2012-08-06 23:29:06 +00:00
MipsISelDAGToDAG.cpp Don't modify MO while use_iterator is still pointing to it. 2012-08-09 22:08:24 +00:00
MipsISelLowering.cpp
MipsISelLowering.h
MipsJITInfo.cpp Implement MipsJITInfo::replaceMachineCodeForFunction. 2012-08-01 02:29:24 +00:00
MipsJITInfo.h
MipsLongBranch.cpp
MipsMachineFunction.cpp
MipsMachineFunction.h
MipsMCInstLower.cpp
MipsMCInstLower.h
MipsRegisterInfo.cpp Implement MipsSERegisterInfo::eliminateCallFramePseudoInstr. The function emits 2012-07-31 23:52:55 +00:00
MipsRegisterInfo.h Implement MipsSERegisterInfo::eliminateCallFramePseudoInstr. The function emits 2012-07-31 23:52:55 +00:00
MipsRegisterInfo.td
MipsRelocations.h
MipsSchedule.td
MipsSEFrameLowering.cpp Move the code that creates instances of MipsInstrInfo and MipsFrameLowering out 2012-08-02 18:21:47 +00:00
MipsSEFrameLowering.h Add definitions of two subclasses of MipsFrameLowering, Mips16FrameLowering and 2012-07-31 22:50:19 +00:00
MipsSEInstrInfo.cpp Move the code that creates instances of MipsInstrInfo and MipsFrameLowering out 2012-08-02 18:21:47 +00:00
MipsSEInstrInfo.h Implement MipsSERegisterInfo::eliminateCallFramePseudoInstr. The function emits 2012-07-31 23:52:55 +00:00
MipsSelectionDAGInfo.cpp
MipsSelectionDAGInfo.h
MipsSERegisterInfo.cpp Remove unused variable. 2012-08-01 00:37:53 +00:00
MipsSERegisterInfo.h Implement MipsSERegisterInfo::eliminateCallFramePseudoInstr. The function emits 2012-07-31 23:52:55 +00:00
MipsSubtarget.cpp
MipsSubtarget.h
MipsTargetMachine.cpp Move the code that creates instances of MipsInstrInfo and MipsFrameLowering out 2012-08-02 18:21:47 +00:00
MipsTargetMachine.h Add definitions of two subclasses of MipsFrameLowering, Mips16FrameLowering and 2012-07-31 22:50:19 +00:00
MipsTargetObjectFile.cpp
MipsTargetObjectFile.h