llvm-6502/lib
Jakob Stoklund Olesen 8879480ed7 Sketch a LiveRegMatrix analysis pass.
The LiveRegMatrix represents the live range of assigned virtual
registers in a Live interval union per register unit. This is not
fundamentally different from the interference tracking in RegAllocBase
that both RABasic and RAGreedy use.

The important differences are:

- LiveRegMatrix tracks interference per register unit instead of per
  physical register. This makes interference checks cheaper and
  assignments slightly more expensive. For example, the ARM D7 reigster
  has 24 aliases, so we would check 24 physregs before assigning to one.
  With unit-based interference, we check 2 units before assigning to 2
  units.

- LiveRegMatrix caches regmask interference checks. That is currently
  duplicated functionality in RABasic and RAGreedy.

- LiveRegMatrix is a pass which makes it possible to insert
  target-dependent passes between register allocation and rewriting.
  Such passes could tweak the register assignments with interference
  checking support from LiveRegMatrix.

Eventually, RABasic and RAGreedy will be switched to LiveRegMatrix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158255 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-09 02:13:10 +00:00
..
Analysis Round 2 of dead private variable removal. 2012-06-06 19:47:08 +00:00
Archive
AsmParser
Bitcode
CodeGen Sketch a LiveRegMatrix analysis pass. 2012-06-09 02:13:10 +00:00
DebugInfo
ExecutionEngine Round 2 of dead private variable removal. 2012-06-06 19:47:08 +00:00
Linker
MC Add accessors for all private members of DisasmContext. 2012-06-06 20:45:10 +00:00
Object Convert comments to proper Doxygen comments. 2012-06-09 00:01:45 +00:00
Support Convert comments to proper Doxygen comments. 2012-06-09 00:01:45 +00:00
TableGen
Target Test commit 2012-06-09 00:27:55 +00:00
Transforms Convert comments to proper Doxygen comments. 2012-06-09 00:01:45 +00:00
VMCore
CMakeLists.txt
LLVMBuild.txt
Makefile