llvm-6502/include/llvm
Evan Cheng 358dec5180 Part 1.
- Change register allocation hint to a pair of unsigned integers. The hint type is zero (which means prefer the register specified as second part of the pair) or entirely target dependent.
- Allow targets to specify alternative register allocation orders based on allocation hint.

Part 2.
- Use the register allocation hint system to implement more aggressive load / store multiple formation.
- Aggressively form LDRD / STRD. These are formed *before* register allocation. It has to be done this way to shorten live interval of base and offset registers. e.g.
v1025 = LDR v1024, 0
v1026 = LDR v1024, 0
=>
v1025,v1026 = LDRD v1024, 0

If this transformation isn't done before allocation, v1024 will overlap v1025 which means it more difficult to allocate a register pair.

- Even with the register allocation hint, it may not be possible to get the desired allocation. In that case, the post-allocation load / store multiple pass must fix the ldrd / strd instructions. They can either become ldm / stm instructions or back to a pair of ldr / str instructions.

This is work in progress, not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73381 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-15 08:28:29 +00:00
..
ADT fix build on VC++2k8. 2009-06-02 20:32:59 +00:00
Analysis Specialize DenseMapInfo for SCEVHandle, so that SCEVHandles can be 2009-06-14 22:55:07 +00:00
Assembly
Bitcode Give embedded metadata its own type instead of relying on EmptyStructTy. 2009-05-30 05:06:04 +00:00
CodeGen Part 1. 2009-06-15 08:28:29 +00:00
CompilerDriver
Config More portability checks for CMake's config.h. 2009-06-05 23:46:34 +00:00
Debugger
ExecutionEngine Remove unused parameter warnings. 2009-06-11 20:10:02 +00:00
Support Simple ELF32/64 binary files can now be emitted for x86 and x86_64 without 2009-06-07 21:22:38 +00:00
System add a new static method to portably determine whether a patch is 2009-06-15 04:17:07 +00:00
Target Part 1. 2009-06-15 08:28:29 +00:00
Transforms Fix old-style type names in comments. 2009-06-14 23:30:43 +00:00
AbstractTypeUser.h
Argument.h
Attributes.h Cosmetic changes to parameter attribute verification. 2009-06-11 08:11:03 +00:00
AutoUpgrade.h
BasicBlock.h
CallGraphSCCPass.h
CallingConv.h
CMakeLists.txt
Constant.h
Constants.h Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
DerivedTypes.h Create FunctionType::isValidArgumentType to go along with isValidReturnType. 2009-06-07 07:26:46 +00:00
Function.h Implement and use new method Function::hasAddressTaken(). 2009-06-10 08:41:11 +00:00
GlobalAlias.h
GlobalValue.h available_externall linkage is not local, this was confusing the codegenerator, 2009-05-23 14:06:57 +00:00
GlobalVariable.h
InlineAsm.h
InstrTypes.h Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
Instruction.def Split the Add, Sub, and Mul instruction opcodes into separate 2009-06-04 22:49:04 +00:00
Instruction.h Allow readonly functions to unwind exceptions. Teach 2009-05-06 06:49:50 +00:00
Instructions.h Remove getType() overrides for ExtractValueInst and InsertValueInst. 2009-05-18 18:46:57 +00:00
IntrinsicInst.h
Intrinsics.h
Intrinsics.td Update the names of the exception handling sjlj instrinsics to 2009-05-14 00:46:35 +00:00
IntrinsicsAlpha.td
IntrinsicsARM.td
IntrinsicsCellSPU.td
IntrinsicsPowerPC.td
IntrinsicsX86.td
IntrinsicsXCore.td
LinkAllPasses.h Add an early implementation of a partial inlining pass. The idea behind this 2009-06-14 08:26:32 +00:00
LinkAllVMCore.h
Linker.h
MDNode.h Give embedded metadata its own type instead of relying on EmptyStructTy. 2009-05-30 05:06:04 +00:00
Module.h
ModuleProvider.h
OperandTraits.h
Pass.h
PassAnalysisSupport.h Simplify assertion message to avoid confusion. 2009-06-02 17:26:29 +00:00
PassManager.h
PassManagers.h
PassSupport.h
SymbolTableListTraits.h
Type.h Create FunctionType::isValidArgumentType to go along with isValidReturnType. 2009-06-07 07:26:46 +00:00
TypeSymbolTable.h
Use.h Add a comment to refer to the section of the programmer's manual that explains what the pointer tagging in Use is for. 2009-04-30 23:28:50 +00:00
User.h
Value.h
ValueSymbolTable.h