llvm-6502/include/llvm/CodeGen
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
..
AsmPrinter.h Move the tablegen-produced DebugLoc handling into a AsmWriter::processDebugLoc function. 2009-05-07 13:55:51 +00:00
BinaryObject.h Introduce new BinaryObject (blob) class, ELF Writer modified to use it. BinaryObject.h by Aaron Gray 2009-06-14 07:53:21 +00:00
BreakCriticalMachineEdge.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
CallingConvLower.h Clean up formatting, remove trailing whitespace, fix comment typos and 2009-04-17 20:35:10 +00:00
DAGISelHeader.h Generalize one of the SelectionDAG::ReplaceAllUsesWith overloads 2009-04-15 20:06:30 +00:00
DebugLoc.h Temporarily revert r72191. It was causing an assert during llvm-gcc 2009-05-21 00:04:55 +00:00
DwarfWriter.h Revert 71165. It did more than just revert 71158 and it introduced 2009-05-07 19:46:24 +00:00
ELFRelocation.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
FastISel.h Temporarily revert r72191. It was causing an assert during llvm-gcc 2009-05-21 00:04:55 +00:00
FileWriters.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
GCMetadata.h Rename some GC classes so that their roll will hopefully be clearer. 2008-08-17 18:44:35 +00:00
GCMetadataPrinter.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
GCs.h Rename some GC classes so that their roll will hopefully be clearer. 2008-08-17 18:44:35 +00:00
GCStrategy.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
IntrinsicLowering.h
JITCodeEmitter.h Type change cleanup on JCE and MCE. Patch by Aaron Gray 2009-06-12 23:51:56 +00:00
LatencyPriorityQueue.h Fix some register-alias-related bugs in the post-RA scheduler liveness 2008-12-16 03:25:46 +00:00
LazyLiveness.h Remove warnings: no newline at end of file. 2009-06-10 03:42:13 +00:00
LinkAllAsmWriterComponents.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
LinkAllCodegenComponents.h Instead of passing in an unsigned value for the optimization level, use an enum, 2009-04-29 23:29:43 +00:00
LiveInterval.h Move register allocation preference (or hint) from LiveInterval to MachineRegisterInfo. This allows more passes to set them. 2009-06-14 20:22:55 +00:00
LiveIntervalAnalysis.h Update to in-place spilling framework. Includes live interval scaling and trivial rewriter. 2009-06-02 16:53:25 +00:00
LiveStackAnalysis.h Update to in-place spilling framework. Includes live interval scaling and trivial rewriter. 2009-06-02 16:53:25 +00:00
LiveVariables.h LiveVariables::VarInfo contains an AliveBlocks BitVector, which has as many 2009-05-26 18:27:15 +00:00
MachineBasicBlock.h Reapply 68073, with fixes. EH Landing-pad basic blocks are not 2009-03-31 18:39:13 +00:00
MachineCodeEmitter.h Type change cleanup on JCE and MCE. Patch by Aaron Gray 2009-06-12 23:51:56 +00:00
MachineCodeInfo.h Add missing file. 2009-05-18 21:08:45 +00:00
MachineConstantPool.h Use CHAR_BIT instead of hard-coding 8 in several places where it 2009-04-01 18:45:54 +00:00
MachineDominators.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
MachineFrameInfo.h Fix a bunch of Doxygen syntax issues. Escape special characters, 2009-03-03 02:55:14 +00:00
MachineFunction.h Temporarily revert r72191. It was causing an assert during llvm-gcc 2009-05-21 00:04:55 +00:00
MachineFunctionPass.h Add a new "available_externally" linkage type. This is intended 2009-04-13 05:44:34 +00:00
MachineInstr.h MachineInstr::isRegTiedTo{Use,Def}Operand can safely be made const. 2009-04-29 20:57:16 +00:00
MachineInstrBuilder.h Change MachineInstrBuilder::addReg() to take a flag instead of a list of 2009-05-13 21:33:08 +00:00
MachineJumpTableInfo.h Move MachineJumpTableInfo::ReplaceMBBInJumpTables out of line. 2009-04-15 01:18:49 +00:00
MachineLocation.h Switch the MachineOperand accessors back to the short names like 2008-10-03 15:45:36 +00:00
MachineLoopInfo.h Eliminate several more unnecessary intptr_t casts. 2009-02-18 05:09:16 +00:00
MachineMemOperand.h Change the FoldingSetNodeID usage for objects which carry 2008-08-20 15:58:01 +00:00
MachineModuleInfo.h Restore minor deletion. 2009-05-04 18:40:41 +00:00
MachineOperand.h Give RemoveRegOperandFromRegInfo a comment and move the 2009-04-15 01:17:37 +00:00
MachinePassRegistry.h
MachineRegisterInfo.h Part 1. 2009-06-15 08:28:29 +00:00
MachineRelocation.h Fix MachineCodeEmitter to use uintptr_t instead of intptr_t. This avoids some overflow issues. Patch by Thomas Jablin. 2008-12-10 02:32:19 +00:00
MachORelocation.h
Passes.h Add a new codegen pass that normalizes dwarf exception handling 2009-05-22 20:36:31 +00:00
PseudoSourceValue.h Have PseudoSourceValue override Value::dump, so that it works 2008-12-03 21:37:21 +00:00
RegAllocRegistry.h
RegisterCoalescer.h Fix a bunch of Doxygen syntax issues. Escape special characters, 2009-03-03 02:55:14 +00:00
RegisterScavenging.h Don't pass BitVectors by value, pass them by reference. 2009-02-06 09:16:15 +00:00
RuntimeLibcalls.h Add a new codegen pass that normalizes dwarf exception handling 2009-05-22 20:36:31 +00:00
ScheduleDAG.h Add a new bit to SUnit to record whether a node has implicit physreg 2009-03-23 16:10:52 +00:00
ScheduleHazardRecognizer.h Initial hazard recognizer support in post-pass scheduling. This includes 2009-01-16 01:33:36 +00:00
SchedulerRegistry.h Instead of passing in an unsigned value for the optimization level, use an enum, 2009-04-29 23:29:43 +00:00
SelectionDAG.h Revert 72707 and 72709, for the moment. 2009-06-02 03:12:52 +00:00
SelectionDAGISel.h Factor out cycle-finder code and make it generic. 2009-05-08 18:51:58 +00:00
SelectionDAGNodes.h Revert 72707 and 72709, for the moment. 2009-06-02 03:12:52 +00:00
ValueTypes.h Remove the SimpleTy enumerated type field from the MVT 2009-04-19 06:23:05 +00:00
ValueTypes.td Added support for vector widening. 2008-12-18 20:03:17 +00:00