1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 11:42:57 +01:00
llvm-mirror/lib/CodeGen
Evan Cheng 13037fbfb4 Move rematerialization out of beta.
llvm-svn: 35419
2007-03-28 08:26:40 +00:00
..
SelectionDAG Scale 1 is always ok. 2007-03-28 01:55:52 +00:00
AsmPrinter.cpp Small eye-candy: use asciz directive everywhere, where possible. 2007-03-06 19:25:02 +00:00
BranchFolding.cpp maintain LiveIn when splitting blocks (register scavenging needs it) 2007-03-20 21:35:06 +00:00
DwarfWriter.cpp Cleanup: make SetCounter an instance variable 2007-03-07 08:25:02 +00:00
ELFWriter.cpp Generalize TargetData strings, to support more interesting forms of data. 2007-02-14 05:52:17 +00:00
ELFWriter.h Moved from include/llvm/CodeGen to lib/CodeGen. 2007-02-08 01:30:50 +00:00
IntrinsicLowering.cpp Lower eh filter intrinsic. 2007-03-01 20:24:30 +00:00
LiveInterval.cpp Added an automatic cast to "std::ostream*" etc. from OStream. We then can 2006-12-17 05:15:13 +00:00
LiveIntervalAnalysis.cpp Move rematerialization out of beta. 2007-03-28 08:26:40 +00:00
LiveVariables.cpp Track the BB's where each virtual register is used. 2007-03-17 09:29:54 +00:00
LLVMTargetMachine.cpp Now LoopStrengthReduce is a LoopPass. 2007-03-06 21:14:09 +00:00
MachineBasicBlock.cpp Print preds / succs BB numbers. 2007-03-09 08:29:08 +00:00
MachineFunction.cpp Generalize TargetData strings, to support more interesting forms of data. 2007-02-14 05:52:17 +00:00
MachineInstr.cpp Change findRegisterUseOperand() to return operand index instead. 2007-03-26 22:37:45 +00:00
MachineModuleInfo.cpp Collect eh filter info. 2007-03-01 20:25:32 +00:00
MachinePassRegistry.cpp
MachOWriter.cpp Remove unneeded header file. 2007-03-04 04:41:04 +00:00
MachOWriter.h More Mach-O writer improvements. 2007-02-28 07:40:50 +00:00
Makefile this will work better 2006-11-03 19:15:55 +00:00
Passes.cpp *** empty log message *** 2006-11-16 20:11:33 +00:00
PHIElimination.cpp Keep UsedBlocks info accurate. 2007-03-18 09:02:31 +00:00
PhysRegTracker.h
PrologEpilogInserter.cpp If target decides to create an emergency spill slot, make sure it's closest to SP or frame pointer. 2007-03-06 10:02:38 +00:00
README.txt Potential spiller improvement. 2007-03-20 22:22:38 +00:00
RegAllocLinearScan.cpp First cut trivial re-materialization support. 2007-03-20 08:13:50 +00:00
RegAllocLocal.cpp Use BitVector instead of vector<bool> which can be extremely slow. 2007-02-15 05:59:24 +00:00
RegAllocSimple.cpp Eliminate static ctors from Statistics 2006-12-19 22:41:21 +00:00
RegisterScavenging.cpp Fix reversed logic in getRegsUsed. Rename RegStates to RegsAvailable to 2007-03-26 22:23:54 +00:00
TwoAddressInstructionPass.cpp Keep UsedBlocks info accurate. 2007-03-18 09:02:31 +00:00
UnreachableBlockElim.cpp
VirtRegMap.cpp Don't call getOperandConstraint() if operand index is greater than 2007-03-27 00:48:28 +00:00
VirtRegMap.h First cut trivial re-materialization support. 2007-03-20 08:13:50 +00:00

Common register allocation / spilling problem:

	mul lr, r4, lr
	str lr, [sp, #+52]
	ldr lr, [r1, #+32]
	sxth r3, r3
	ldr r4, [sp, #+52]
	mla r4, r3, lr, r4

can be:

	mul lr, r4, lr
        mov r4, lr
	str lr, [sp, #+52]
	ldr lr, [r1, #+32]
	sxth r3, r3
	mla r4, r3, lr, r4

and then "merge" mul and mov:

	mul r4, r4, lr
	str lr, [sp, #+52]
	ldr lr, [r1, #+32]
	sxth r3, r3
	mla r4, r3, lr, r4

It also increase the likelyhood the store may become dead.