llvm-6502/lib
Quentin Colombet e9a4e0681e [PeepholeOptimizer] Advanced rewriting of copies to avoid cross register banks
copies.

This patch extends the peephole optimization introduced in r190713 to produce
register-coalescer friendly copies when possible.

This extension taught the existing cross-bank copy optimization how to deal
with the instructions that generate cross-bank copies, i.e., insert_subreg,
extract_subreg, reg_sequence, and subreg_to_reg.
E.g.
b = insert_subreg e, A, sub0 <-- cross-bank copy
...
C = copy b.sub0 <-- cross-bank copy

Would produce the following code:
b = insert_subreg e, A, sub0 <-- cross-bank copy
...
C = copy A <-- same-bank copy

This patch also introduces a new helper class for that: ValueTracker.
This class implements the logic to look through the copy related instructions
and get the related source.

For now, the advanced rewriting is disabled by default as we are lacking the
semantic on target specific instructions to catch the motivating examples.

Related to <rdar://problem/12702965>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212100 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-01 14:33:36 +00:00
..
Analysis Suppress inlining when the block address is taken 2014-07-01 00:19:34 +00:00
AsmParser IR: Add COMDATs to the IR 2014-06-27 18:19:56 +00:00
Bitcode IR: Add COMDATs to the IR 2014-06-27 18:19:56 +00:00
CodeGen [PeepholeOptimizer] Advanced rewriting of copies to avoid cross register banks 2014-07-01 14:33:36 +00:00
DebugInfo
ExecutionEngine ExecutionEngine::create(): fix interpreter fallback when JIT is unavailable 2014-07-01 03:18:49 +00:00
IR Revert "DebugInfo: Ensure that all debug location scope chains from instructions within a function, lead to the function itself." 2014-07-01 04:11:45 +00:00
IRReader
LineEditor
Linker Include <tuple> to make buildbots happy 2014-06-27 18:38:12 +00:00
LTO Use a range loop. No functionality change. 2014-06-28 18:44:59 +00:00
MC Fix .seh_stackalloc 0 2014-07-01 00:42:47 +00:00
Object Speculatively fix some code handling Power64 MachO files 2014-06-30 20:12:59 +00:00
Option
ProfileData
Support Remove obsolete function TargetRegistry::getClosestTargetForJIT() 2014-07-01 10:47:13 +00:00
TableGen
Target Fix .seh_stackalloc 0 2014-07-01 00:42:47 +00:00
Transforms GlobalOpt: Handle non-zero offsets for aliases 2014-07-01 00:30:56 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile